Java数据类型分为:基本类型和引用类型
基本类型有9种,按照所占字节数从小到大为:
boolean,byte,char,short,int,long,float,double,string其中后六个有直接值。字节大小分别是:1,1,2,2,4,8,4,8. Boolean只能取false和true。
引用类型除了上面9种对应的类类型还有,接口类型,对象类型,数组类型。
不同类型之间可以进行转换,有自动转换和强制转换两种方式:
自动转换可以从小到大的范围进行转换,比如:short,char,byte到int,int到float等,反过来不行,可以进行强制转换。示例如下:
char a = 'a';
int b = 1;
// 运算是输出的是一个数字
int c = (a+b);
// 将整型int强制转换为char
char d = (char) (a + b);
System.out.println(c);
System.out.println(d);
//
float e = 11f;
double f = 0.1;
float h = (float) (e + f);
double dbl = e + f;
但是大转小,即窄化转换会有丢失信息的情况,1)丢失精度,如损失精度, 比如说 int i= 1/10 结果是i 为0 ; 整型的只能装整型。2)超出部分丢失,例如,long是64位,如果要强制转换成int 32位的,如果超出了Int的表示范围,就会发生丢失。
double与float,表示浮点数数位不同,定义是数值后面需加D,F。小数默认为double的,但是赋整数值时不加后缀亦可,会进行自动转换。
类类型有实例操作方法进行转换。
默认值需要注意的地方:boolean默认为false,byte,char,short没有默认值。引用类型的默认值为null。Static变量有默认值但是final型没有。凡是要继承的,要改变的都不能用final修饰。
初始化:java变量都是要先定义,再初始化,然后才能使用的,对于有默认值的变量可以不进行初始化。否则编译出错。
引用类型
引用类型的调用需要引用变量,引用变量放在栈区,其所对应的实例化对象放在堆区,静态变量放在方法区。如下:String str = new String();、
引用类型可以赋值,作为参数传递,但是是作为复本来使用的。原本指向的对象不会改变。
变量的作用域:
即生命周期,静态变量,成员变量,局部变量。没什么强调的,this的问题很广设计的问题太多,以后和super一起单独写一篇。
怎么将局部变量的作用域最小化,既然局部变量作用在方法体内,那么有两种方法:1)分割方法,减少每个方法实现的能力。
2)把变量定义到需要的代码块中。
这样做的好处是:1)增强程序的可读性和可维护性
2)不用的时候不分配空间,提高执行效率。
3)不会被错误的使用。
基本类型有9种,按照所占字节数从小到大为:
boolean,byte,char,short,int,long,float,double,string其中后六个有直接值。字节大小分别是:1,1,2,2,4,8,4,8. Boolean只能取false和true。
引用类型除了上面9种对应的类类型还有,接口类型,对象类型,数组类型。
不同类型之间可以进行转换,有自动转换和强制转换两种方式:
自动转换可以从小到大的范围进行转换,比如:short,char,byte到int,int到float等,反过来不行,可以进行强制转换。示例如下:
char a = 'a';
int b = 1;
// 运算是输出的是一个数字
int c = (a+b);
// 将整型int强制转换为char
char d = (char) (a + b);
System.out.println(c);
System.out.println(d);
//
float e = 11f;
double f = 0.1;
float h = (float) (e + f);
double dbl = e + f;
但是大转小,即窄化转换会有丢失信息的情况,1)丢失精度,如损失精度, 比如说 int i= 1/10 结果是i 为0 ; 整型的只能装整型。2)超出部分丢失,例如,long是64位,如果要强制转换成int 32位的,如果超出了Int的表示范围,就会发生丢失。
double与float,表示浮点数数位不同,定义是数值后面需加D,F。小数默认为double的,但是赋整数值时不加后缀亦可,会进行自动转换。
类类型有实例操作方法进行转换。
默认值需要注意的地方:boolean默认为false,byte,char,short没有默认值。引用类型的默认值为null。Static变量有默认值但是final型没有。凡是要继承的,要改变的都不能用final修饰。
初始化:java变量都是要先定义,再初始化,然后才能使用的,对于有默认值的变量可以不进行初始化。否则编译出错。
引用类型
引用类型的调用需要引用变量,引用变量放在栈区,其所对应的实例化对象放在堆区,静态变量放在方法区。如下:String str = new String();、
引用类型可以赋值,作为参数传递,但是是作为复本来使用的。原本指向的对象不会改变。
变量的作用域:
即生命周期,静态变量,成员变量,局部变量。没什么强调的,this的问题很广设计的问题太多,以后和super一起单独写一篇。
怎么将局部变量的作用域最小化,既然局部变量作用在方法体内,那么有两种方法:1)分割方法,减少每个方法实现的能力。
2)把变量定义到需要的代码块中。
这样做的好处是:1)增强程序的可读性和可维护性
2)不用的时候不分配空间,提高执行效率。
3)不会被错误的使用。