java中变量和常量

2016-06-25  本文已影响36人  殇青涩年华疯子的明天

JAVA  常量

常量:     (命名规范: 字母全部大写,单词之间用 "_"进行分隔 )

         (1)在程序执行过程中,其值不发生改变的值;

         (2)在编译时期就能确定其值;

分类:

1.  字面值常量

2.  自定义常量

字面值常量

1.  字符串常量:  “hello”, “world”

2.  整数常量:  100, 200    默认是 int类型, 

3.  小数常量:    1.2          默认是double类型

4.  字符常量:    ‘a’,  ‘b’

5.  布尔常量:    true, false

6.  空常量:      null

变量:  内存中分配的一块空间;

java中的8种基本数据类型:

(1) 整型   byte (1字节)  short(2字节)  int (4字节或者8字节)   long(8字节)

              1字节为8bit, 为内存存储的基本单位

              int为计算机运算的基本单位,  32bit/64bit

数字常量默认为 int类型; 注意 long i =100000000000是会编译报错的,因为10000~默认是int类型,但是已经溢出了;

(2) 浮点型  float(4字节)  double(8字节)

(3) 字符类型 char  (1字节)

(4) 布尔型  boolean(1字节)  仅含有 true,false两个值;

(5) 字符串类型 String    不属于基本数据类型,而是引用数据类型

变量声明方式:

(1)  数据类型   变量名

(2)  数据类型   变量名1, 变量名2

变量必须先声明再使用, 同一个作用域中不能声明同名的变量

int  age, height;

age = 10;

height = 170;

System.out.println( age );

System.out.println(height);

数据类型的转换  (不同数据类型的赋值,以及数学运算)

(1) 小数据类型  --------> 大数据类型     自动转换

(2) 大数据类型  --------->小数据类型    需要强制类型转换才能实现

/*

       小精度数据 转  大精度数据  -->隐式转换,自动转换

*/

     byte b = 11;

     short s = b;

     int i = s;

     System.out.println("i:"+i);

/*

     大数据类型 --> 小数据类型  需要强制转换,否则编译器报错

*/

/*

    为什么b为 -128的原因?

            这也是为什么大数据-->小数据类型 时,编译器报错的原因, 因为数据精度可能丢失,导致数据不正确, 如果程序的确有必要这样转,请显示声明转换;

            另外:在计算机中,整数都是以补码的形式存储的;且最高位是符号位,b是1字节数据,但是此时b的数据为 100000000,就表示为一个负数了,且数字为128;

*/

int  i = 128;

byte b = (byte)i;

System.out.println(b);  //-128

/*

凡是byte,short,char数据类型数据在运算的时候,都会自动转成int类型的数据再进行运算;因为int的位数是计算机运算的基本单位;

          b1 + b 2 ,此时表达式的值 是 int类型的数据, 而int->byte需要强制转换

*/

    byte b1 = 1;

    byte b2 = 2;

    byte b3 = (byte)(b1+b2);

    System.out.println("b3:"+b3);

/*

两个不同类型的数据在运算的时候,结果的数据类型 取决于大的数据类型;

(int + long)---> (隐士转换)long ---->需要强转成 int

*/

   int   i = 10;

   long l = i;

   i  = (int)(i+1);

   System.out.println("i:"+i);

/*

(1) byte  b = 10;

(2) int i = 10;

      b = i;

为什么前者不报错,后者报错?

     因为,10是常量,编译器在编译的时候就能够确定常量的值了,此时编译器能够检查到10并没有超出byte的表示范围,所以允许赋值;

    而int i=10, i的值不能在编译时期确定其值,需要在运行时才能够确定i的值,所以有可能精度丢失,而报错;

*/

上一篇 下一篇

猜你喜欢

热点阅读