基本类型和运算

  • 1.1 java中的基本数据类型
  • 1.2 什么是不可变类
  • 1.3 值传递和引用传递的区别
  • 1.4 不同数据类型的转换有哪些规则
  • 1.5 强制类型转换的注意事项
  • 1.6 运算符的优先级
  • 1.7 Math类中的round、ceil和floor方法的功能
  • 1.8 ++i和i++有什么区别
  • 1.9 如何实现无符号数的右移
  • 1.10 char型变量是否可以存储一个汉字


1.1 java中的基本数据类型

dobble java 几个字节 javadouble长度_dobble java 几个字节


int长度数据类型:byte(8bit)、short(16bit)、int(32bit)、long(64bit)

float长度数据类型:单精度(32bit float)、双精度(64bit double);

boolean类型变量取值:true/false

char数据类型:unicode字符(16bit)

Java还对基本数据类型进行了封装(字符型Character,布尔类型Boolean,数值类型Byte,Short,Integer,Long,Float,Double)

java中默认小数是double类型的,直接写的整型数字是int类型

引申:

  1. java中的null值不是一个合法的object实例,编译器没有为其分配内存,null只是将引用变量的值全部置0;
  2. Java语言中变量分为原始值和引用值,声明为基本类型的变量存储的都是实际值;声明为引用类型的变量,存储的是实际对象的地址。String x = null,定义了一个变量“x” 存放的是String引用,为null;

1.2 什么是不可变类

不可变类是指当创建这个类的实例之后,就不允许修改它的值。Java类库中所有基本数据类型的包装类是不可变类,String类也是不可变类;

1.3 值传递和引用传递的区别

  • 值传递
    在方法调用中,实参会把它的值传给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参和实参的值相同,但是存储单元不同,改变形参的值不会影响实参的值;
  • 引用传递
    方法调用中,传递的是对象的地址,形参和实参的对象指向的是同一存储单元,形参的改变会影响实参的值。

Java中基本数据类型在传递参数时都是按值传递,包装类型在传递时是按引用传递;

1.4 不同数据类型的转换有哪些规则

转换规则:
从低精度向高精度转换,优先级满足byte<short<char<int<long<float<double;

类型转换

  • 类型自动转换
    低级数据可以自动转换为高级数据类型
  • dobble java 几个字节 javadouble长度_Java_02

  • char类型数据转换为高级类型(int、long),会转换为对应的ASCII码;
    byte、char、short类型的数据在参与运算时会自动转换为int;
    基本数据类型和boolean类型之间不能相互转换;
  • 强制类型转换
  • dobble java 几个字节 javadouble长度_Java_03


  • dobble java 几个字节 javadouble长度_基础知识_04

1.5 强制类型转换的注意事项

例如对于语句short s1 = 1;s1 = s1+1;由于s1+1在运算时将结果变为int类型,s1是short类型,所以编译器会报错;short s1 =1;s1+=1中"+="是Java语言中规定的语法,会直接将s1转换为int类型;

1.6 运算符的优先级

dobble java 几个字节 javadouble长度_运算_05


如何不确定运算符的优先级,最好使用括号运算符来控制运算顺序;

1.7 Math类中的round、ceil和floor方法的功能

  • round表示四舍五入,在原数的基础上先增加0.5在向下取整;
  • ceil的功能是向上取整,Math.ceil(a),取大于a的最小整数值,返回值类型是double
  • floor是向下取整,Math.floor(a),取小于a的最大整数值,返回值类型是double;

1.8 ++i和i++有什么区别

i++是在程序执行完毕后进行自增;
++i是在程序开始执行前进行自增;

1.9 如何实现无符号数的右移

">>"执行右移操作时,参与运算的数字为正数,则在高位补0;若为负数则在高位补1;
">>>"无论正数还是负数都在高位补0;
"<<"左移运算符,左移n位表示原来的值*2的n次方;

1.10 char型变量是否可以存储一个汉字

Java语言中默认采用Unicode编码方式,每个字符占用两个字节,可以用来存储中文。中文占用两个字符,英文占用一个字符,采用这种存储方式的一个重要作用就是减少所需要的存储空间,提高存储效率。