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);
}
}