基本数据类型
基本数据类型占的字节
数据类型 | 字节数 | bit(位) | 可存储数据的个数 |
---|---|---|---|
byte | 1 | 8 | 2^8=256 |
short | 2 | 16 | 2^16 |
int | 4 | 32 | 2^32 |
long | 8 | 64 | 2^64 |
float | 4 | 32 | 2^32 |
double | 8 | 64 | 2^64 |
boolean | 1(或4) | 8(或32) | 2^8(或2^32) |
2.布尔类型:用boolean声明一个变量时,该变量的内存占用1或4个字节。当声明的是一个基本类型的变量时,该变量占四个字节;声明一个数组类型时,数组中每个元素占一个字节。
3.(1)若一整数没有添加任何标识,则默认为int型。若表示long型,可在数据后面加上L或l。eg:long money=10000000000000000L;
(2)若一浮点数没有添加任何标识,则默认为double型。若表示float型,可在数据后面加上f或F。eg:float money=5.20f;
4.数据类型转换细节
(1)凡是byte,short,char数据类型数据运算时,会自动转换成int型数据再运算。
//例1:
byte num1=1;
byte num2=2;
byte sum=num1+num2;//此句会报错,因为(num1+num2)的结果是int型。正确写法:byte sum=(byte)(num1+num2);
//例2:
System.out.println('a'+1); //结果是:98
(2)两个不同的数据类型运算时,结果取决于大的数据类型。
int num=10;
long num1=20;
num=num+num1; //报错。因为num是int型,(num+num1)是long型。解决办法:强制类型转换 num=(int)(num+num1);
交换两个变量的值的三种方法
法一:引用第三方变量
int a=3;
int b=5;
int temp=a;
a=b; //a=5
b=temp; //b=3
法二:加减法(不允许使用第三方变量时)
int a=3;
int b=5;
a=a+b;
b=a-b;
a=a-b;
//缺点:两个int类型的数相加,有可能超出int的范围。
法三:使用异或(不允许使用第三方变量时)
int a=3;
int b=5;
a=a^b; //a=3^5
b=a^b; //b=(3^5)^5=3
a=a^b; //a=(3^5)^3=5
//缺点:逻辑不清晰
栈内存和堆内存
1.栈内存的特点:存储的都是局部变量,变量一旦出了自己的作用域马上会从内存中消失,释放内存空间。
2.堆内存的特点:存储的都是局部变量,变量一旦被使用完,并不会从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时候该对象才会消失。(垃圾回收器是一段能释放内存的程序)
3.凡是以关键字创建的对象,java虚拟机都会在堆内存中开辟一片新的内存空间,创建一个新的对象。
局部变量和成员变量
1.局部变量:在一个方法内部定义的变量。
2.成员变量:在方法外,类之内定义的变量。
二维数组
1.定义二维数组:
数据类型[][] 变量名=new 数据类型[长度1][长度2];
2.二维数组长度:
int[][] arr=new int[3][5];
System.out.println(arr.length); //arr.length=3
System.out.println(arr[1].length); //arr[1].length=5
3.遍历二维数组
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;i+=){
System.out.println(arr[i][j]+",");
}
System.out.println();//换行
}