• JAVA定义变量和基础的数据类型和关键字


        标识符语法

      1)java中定义标识符格式以字母,数字,下划线,$符合组成,不能以数字开头,且不能为    

          java中的关键字。
        
          2)标识符意义要明确,不要乱起
        
          3)标识符区分大小写例如 z和Z是不同的两个标识符

       4)java常用关键字

                      Java中的关键字

    abstract

    assert

    boolean

    break

    byte

    case

    catch

    char

    class

    continue

    const

    default

    do

    double

    else

    extends

    enum

    final

    finally

    float

    for

    goto

    if

    implements

    import

    instanceof

    int

    interface

    long

    native

    new

    package

    private

    protected

    public

    return

    short

    static

    synchronized

    super

    strictfp

    this

    throw

    throws

    transient

    try

    void

    volatile

    while 

    数据类型分类和转换

      

    四类

    八种

    字节数

    数据表示范围

    byte

    1

    -128~127

     

    short

    2

    -32768~32767

     

    int

    4

    -2147483648~2147483648

     

    long

    8

    -263~263-1

    浮点型

    float

    4

    -3.403E38~3.403E38

     

    double

    8

    -1.798E308~1.798E308

    字符型

    char

    2

    表示一个字符,如('a','A','0','家')

    布尔型

    boolean

    1

    只有两个值true与false

    1)布尔

    基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错

    2)基本数据类型中数值类型的自动类型提升

    图中依次表示了各数值类型的字节数和相应的取值范围。在Java中,整数类型(byte/short/int/long)中,对于未声明数据类型的整形,其默认类型为int型。在浮点类型(float/double)中,对于未声明数据类型的浮点型,默认为double型。

    1 public class TestCast {
    2  5     
    3  6     public static void main(String[] args) {
    4  7         byte a = 1000;   // 编译出错 
    5  8         float b = 1.5;   // 编译出错 
    6  9         byte c = 3;      // 编译正确
    7 10     }
    8 11     
    9 12 }

    jvm在编译过程中,对于默认为int类型的数值时,当赋给一个比int型数值范围小的数值类型变量(在此统一称为数值类型k,k可以是byte/char/short类型),会进行判断,如果此int型数值超过数值类型k,那么会直接编译出错。因为你将一个超过了范围的数值赋给类型为k的变量,k装不下,你又没有进行强制类型转换,当然报错了。但是如果此int型数值尚在数值类型k范围内,jvm会自定进行一次隐式类型转换,将此int型数值转换成类型k。如图中的虚线箭头。这一点有点特别,需要稍微注意下。

    在其他情况下,当将一个数值范围小的类型赋给一个数值范围大的数值型变量,jvm在编译过程中俊将此数值的类型进行了自动提升

     自动类型转换

    表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换

    自动类型转换格式:

    范围大的数据类型 变量 = 范围小的数据类型值

    强制类型转换格式

    范围小的数据类型  变量 = (范围小的数据类型) 范围大的数据类型值;

    public class TestCast {
    
        public static void main(String[] args) {
            byte p = 3; // 编译正确:int到byte编译过程中发生隐式类型转换
            int  a = 3;
            byte b = a; // 编译出错
            byte c = (byte) a; // 编译正确
            float d = (float) 4.0;
        }
    
     }

    区别在于前者3是直接量,编译期间可以直接进行判定,后者a为一变量,需要到运行期间才能确定,也就是说,编译期间为以防万一,当然不可能编译通过了。此时,需要进行强制类型转换。

    3)其他情况

    public class TestCast {
    
        public static void main(String[] args) {
            long a = 10000000000; //编译出错
            long b = 10000000000L; //编译正确
            int c = 1000;
            long d = c;
            float e = 1.5F;
            double f = e;
        }
     }

    如上:定义long类型的a变量时,将编译出错,原因在于10000000000默认是int类型,同时int类型的数值范围是-2^31 ~ 2^31-1,因此,10000000000已经超过此范围内的最大值,故而其自身已经编译出错,更谈不上赋值给long型变量a了。

    此时,若想正确赋值,改变10000000000自身默认的类型即可,直接改成10000000000L即可将其自身类型定义为long型。此时再赋值编译正确。

    将值为1000的int型变量c赋值给long型变量d,按照上文所述,此时直接发生了自动类型提升, 编译正确。同理,将e赋给f编译正确。

    接下来,还有一个地方需要注意的是:char型其本身是unsigned型,同时具有两个字节,其数值范围是0 ~ 2^16-1,因为,这直接导致byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为负数的问题),同时,byte当然可以直接提升到short型。

     

  • 相关阅读:
    使用海康IP摄像头接入RTSP/RTMP视频平台如何修改默认H.265编码格式?
    视频会议系统EasyRTC常见的几种架构方式及应用场景:MCU/SFU、视频会议、应急指挥、即时通信
    网页全终端视频直播/点播H5播放器EasyPlayer.js正式发布,支持H.265网页播放
    海康&青犀合作RTMP推流摄像头接入RTSP/RTMP网页无插件直播平台EasyDSS忘记密码如何处理?
    视频远程通话会议EasyRTC通过SSH部署,关闭SSH后进程停止运行如何解决?
    【智慧医疗】如何通过视频流媒体平台EasyNVR+EasyNTD搭建医疗行业视频监控平台?
    【解决方案】视频“云-边-端”协同在智慧园区项目中的场景应用
    摄像头智能云组网EasyNTS网络穿透设备如何进行设备配置?
    Web网页无插件播放RTSP、RTMP、HLS、HTTP视频流的可行方案
    RTSP协议视频平台EasyNVR接入H.265视频直播流能显示快照吗?
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/10301286.html
Copyright © 2020-2023  润新知