目录
1.java基础数据类型
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
变量数据类型:
1.java数据类型分为两大类
java数据类型分为两大类,基本数据类型和引用数据类型。
基本数据类型有8种,数值型{byte,shot,int,long,float,double,char,boolean}。
引用类型{类,接口,数组}。
1.整形类型
类型 | 占用储存空间 | 范围 |
byte[字节] | 1字节 | -128~127 |
short[短整型] | 2字节 | -32768(-2^15)~32767(2^15 - 1) |
int[整形] | 4字节 | -2,147,483,648(-2^31)~2,147,483,647(2^31 - 1) |
long[长整形] | 8字节 | -9,223,372,036,854,775,808(-2^63)~9,223,372,036,854,775,807(2^63 -1) |
2.浮点型
类型 | 占用储存空间 | 范围 |
float | 4字节 | -3.404E38~3.4043E38 |
double | 8字节 | -1.798E308~1.798E308 |
- 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位。
2.尾数部分可能丢失,造成精度损失(小数都是近似值)。
3字符型
char类型是一个单一的16Uicode字符,占用两个字节,范围\u0000(十进制为0)~\uffff(64435)。
4.布尔型
boolean数据类型表示一位的信息,占用一个字节,只有两个取值,true和false,char数据类型可以储存任何字符。
代码演示
1 public class data_type { 2 public static void main(String[] args) { 3 // byte 4 System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); 5 System.out.println("包装类:java.lang.Byte"); 6 System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); 7 System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); 8 System.out.println(); 9 10 // short 11 System.out.println("基本类型:short 二进制位数:" + Short.SIZE); 12 System.out.println("包装类:java.lang.Short"); 13 System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); 14 System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); 15 System.out.println(); 16 17 // int 18 System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); 19 System.out.println("包装类:java.lang.Integer"); 20 System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); 21 System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); 22 System.out.println(); 23 24 // long 25 System.out.println("基本类型:long 二进制位数:" + Long.SIZE); 26 System.out.println("包装类:java.lang.Long"); 27 System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); 28 System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); 29 System.out.println(); 30 31 // float 32 System.out.println("基本类型:float 二进制位数:" + Float.SIZE); 33 System.out.println("包装类:java.lang.Float"); 34 System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); 35 System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); 36 System.out.println(); 37 38 // double 39 System.out.println("基本类型:double 二进制位数:" + Double.SIZE); 40 System.out.println("包装类:java.lang.Double"); 41 System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); 42 System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); 43 System.out.println(); 44 45 // char 46 System.out.println("基本类型:char 二进制位数:" + Character.SIZE); 47 System.out.println("包装类:java.lang.Character"); 48 // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 49 System.out.println("最小值:Character.MIN_VALUE=" 50 + (int) Character.MIN_VALUE); 51 // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 52 System.out.println("最大值:Character.MAX_VALUE=" 53 + (int) Character.MAX_VALUE); 54 } 55 }
运行结果
6.转义字符
字符 | 转移码 |
换行 | \n |
制表符(tab) | \t |
' | \' |
" | \" |
\ | \\ |
% | \% |
? | \? |
注:转义是转义后面的字符
7.强制转换和自动转换
public class test2 { public static void main(String[] args) { //在 java 中,char 的本质是一个整数,在默认输出时,是 unicode 码对应的字符 //要输出对应的数字,可以(int)字符 char c1 = 97; System.out.println(c1); // a char c2='鱼'; System.out.println((int) c2);//40060 char c3=40060; System.out.println(c3);//鱼 //自动类型转换 //当Java程序在进行赋值或者运算时,精度小的类型型自动转换为精度大的数据类型, // 这个就是自动类型转换 char a1='a'; int a=a1; //自动类型转换细节 //细节 1: 有多种类型的数据混合运算时 //系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算 int n1 = 10; //ok //float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double //double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 double float d1 = n1 + 1.1F;//对 n1 + 1.1 => 结果类型是 float //细节 2: 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时, //就会报错,反之就会进行自动类型转换。 //int n2 = 1.1;//错误 double -> int //细节 3: (byte, short) 和 char 之间不会相互自动转换 //当把具体数赋给 byte 时,(1)先判断该数是否在 byte 范围内,如果是就可以 //byte b1 = 10; //对 , -128-127 // int n2 = 1; //n2 是 int // byte b2 = n2; //错误,原因: 如果是变量赋值,判断类型 // char c1 = b1; //错误, 原因 byte 不能自动转成 char //细节 3: (byte, short) 和 char 之间不会相互自动转换 //当把具体数赋给 byte 时,(1)先判断该数是否在 byte 范围内,如果是就可以 byte b1 = 10; //对 , -128-127 // int n2 = 1; //n2 是 int // byte b2 = n2; //错误,原因: 如果是变量赋值,判断类型 // // char c1 = b1; //错误, 原因 byte 不能自动转成 char //细节 4: byte,short,char 他们三者可以计算,在计算时首先转换为 int 类型 byte b2 = 1; byte b3 = 2; short s1 = 1; //short s2 = b2 + s1;//错, b2 + s1 => int int s2 = b2 + s1;//对, b2 + s1 => int //byte b4 = b2 + b3; //错误: b2 + b3 => int //boolean 不参与转换 boolean pass = true; //int num100 = pass; // boolean 不参与类型的自动转换 //强制类型转换 //自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 //精度降低或溢出,格外要注意 int i=(int) 1.9; System.out.println(i);//1 int j=100; //1.当进行数据大小从大-->小,就需要使用到强制转换 //2.强制符号只针对最近的操作数有效,往往会使用小括号提升优先级 int y=(int) (10*3.5+1.7); System.out.println(y);//36 //3.char类型可以保存int的常量值,但不能保存int的变量值,需要强转 char f1=100; int m=100; //char f2=m;//错误 char f2=(char) m; System.out.println(f2); //4.byte和shor,char类型在进行运算时,当做int类型处理 } }
8.字符码
这里我推荐一个我一直自学的教程,老师讲的特别详细https://www.bilibili.com/video/BV1fh411y7R8?p=1&vd_source=738ddc837bead4e02347a495b1b0c281