1. 基本数据类型
-
整数
-
byte
-
short
-
int
-
long
-
-
浮点数(小数)
-
float
-
double
-
-
布尔类型
-
boolean
-
-
字符
-
char
-
1.1 整数
计算机中所有的内容,在存储的时候都是使用0,1(二进制)存储的。
010101010010100 0100101010010101001010 0010101001010010101010010101001010010101001010
一个0或者一个1,就叫做一位
数据存储的最小单位是8位,8位叫做一个字节(byte)
两个字节叫做一个字符(char)
1024b -- 1kb 1024kb -- 1MB 1024MB-- 1GB 1024GB -- 1TB 1024TB -- 1PB
byte 8位 1个字节 2^7-1 -2^7
short 16位 2个字节 2^15-1 -2^15
int 32位 4个字节 2^31-1 -2^31
long 64位 8个字节 2^63-1 -2^63
二进制和十进制的转化:
二进制:逢二进一
十进制:逢十进一
八进制:逢八进一
十六进制:逢八进一
十进制 345 = 5*10^0+4*10^1+3*10^2 = 345 二进制 0000 0011 = 1*2^0+1*2^1 = 3 二进制 0000 0101 = 1*2^0+1*2^2 = 5 二进制 0001 1011 = 27 0111 1111 = 1*2^0+1*2^1+...+1*2^6=2^7-1=127 0111 1111 1111 1111 = 1*2^0+1*2^1+...+1*2^14=2^15-1 29 = 0001 1101 100 = 0110 0100 63 = 0011 1111
规定:第一位表示符号位 1:负数 0:正数
byte最大值:0111 1111
short最大值:0111 1111 1111 1111
int 最大值:0111 1111 1111 1111 1111 1111 1111 1111
原码,反码,补码
原码: 正数 : 原码,反码,补码是一样的 负数 : 原码转化为反码,除了符号位不变,其他全部反过来(1-0,0-1) 反码转化为补码,在反码的基础上加1。
package com.qf; public class Demo01 { public static void main(String[] args) { /* * 基本类型整数 * byte * short * int * long */ byte b = -128; short s = 30; int i = 5000; //如果定义long型数据,在值后添加L/l long l = 3L; } }
1.2 小数类型
float 32位 4个字节 3.4E38
double 64位 8个字节 1.7E308
package com.qf; public class Demo02 { public static void main(String[] args) { /* * 浮点数(小数) * double 双精度 64位 8个字节 * float 单精度 32位 4个字节 */ double pi = 3.14; //为float类型的数据赋值,值后需要添加F/f float f = 3.14f; double d1 = 34000000.0; // 3.4E21 3.4 * 10^21 double d2 = 3.4E21; } }
1.3 布尔类型
boolean 值只有 true false
package com.qf; public class Demo03 { public static void main(String[] args) { /* * 布尔类型:boolean * 值只有两种:true/false * * 一般用于接收逻辑运算的结果 */ boolean b1 = true; boolean b2 = false; boolean b3 = 2>1; } }
1.4 字符
char本质上就是整数,是2个字节16位的无符号整数
char的取值范围[0-65535]
package com.qf; public class Demo04 { public static void main(String[] args) { /* * 字符:char * 单个字母 a b c d...z A B C D ...Z * 单个数字 1 2 3 4 5 6 7 8 9 0 * 单个符号 ~ ! # ¥ % & * ( )- + * 单个汉字 大 小 多 少 ...... * 都是字符 * * char 变量名 = '字符'; */ char c1 = 'A'; char c2 = 'b'; char c3 = 65; // A char c4 = 98; // b // System.out.println(c4); /* * char本质上就是整数 * char是2个字节16位的无符号整数 * 意思就是第一位不是符号位,只能表示正数 * 所以char的最大值就是 1111 1111 1111 1111 * char的范围[0-65535] * * 他表示的字符集该数字对应的字符 */ char c5 = 20013; System.out.println(c5); } }
2. 引用数据类型
定义变量表示班级名称 合肥javaEE2104班
班级名称既不是整数,小数,也不是布尔类型,字符
可以把 合肥javaEE2104班 可以是字符( ‘合’ ‘肥’ ‘j’ ‘a’ ‘v’ ‘a’ ‘E’ ‘E’ ‘2’ ‘1’ ‘0’ ‘4’ ‘班’)的串
这种数据类型就认为是字符串String
字符串就是一种引用数据类型
引用数据类型表示除了基本类型以外的其他数据类型
package com.qf; public class Demo05 { public static void main(String[] args) { /* * 定义一个变量表示我们班级名称 合肥javaEE2104班 * * 值:不是整数,小数,布尔,字符 * * 我们可以把他看做是字符串,顾名思义就是由字符组成的串 * * 可以使用String定义字符串,字符串的值必须使用双引号括起来 * 在字符串中定义的是什么内容,他就表示什么值 */ String myClassName = "合肥javaEE2104 班"; //这里表示打印的是一个变量,打印出的是该变量表示的值 System.out.println(myClassName); //这里表示打印的是一个字符串,字符串显示的值是什么,打印的就是什么 System.out.println("myClassName"); /* * 想要打印" * * \" * \' * \\ */ System.out.println("\""); System.out.println("\\"); System.out.println('\''); System.out.println("'"); // \t 表示tab键 System.out.println("你好\t他好\t大家好"); System.out.println("555\t333\t222"); // \n 表示enter键 System.out.println("呵呵\n哒"); } }
3. 数据类型转化
不同类型之间数据进行相互赋值。
从小转向大(自动转化) |
---|
![]() |
从大转向小,需要强制类型转化 |
package com.qf; public class Demo06 { public static void main(String[] args) { /* * 从小转向大(自动转化) 把小杯子中水,导入大杯子中(不会出现溢出的问题,非常安全) * = 表示的是赋值 把右边变量表示的值赋值给左边的变量 */ byte b = 100; short s = b; short s2 = 30000; int i = s2; int i2 = 21000000; long l = i2; float f = l; double d = f; /* * 从大转向小,就是把水从大杯子倒入小杯子,不能自定转化(可能会出现溢出的问题) * 可以强制类型转化:你想转化,我也拦不住你,那你自己要确定好,处了问题,不要找我,这是你自己强制转化的 * * 数据类型 变量 = (目标数据类型)值; * */ int a = 128; short s3 = (short) a; byte b2 = (byte) a; System.out.println(b2); } }