1. 数据类型
java是一门强类型语言,所有的数据在java中都有对应的类型
数据类型分类 | 类型名称 | 所占空间 | 数据范围 | 注意事项 |
---|---|---|---|---|
基本数据类型 | byte(字节型) | 1个字节 | -128 到 127 | 不能存储超过这个空间 |
short(短整型) | 2个字节 | -32768到32767 | 不能超过这个区间 | |
int(整型) | 4个字节 | -2147483648到2147483647 | 不能超过这个区间 | |
long(长整型) | 8个字节 | -9223372036854775808到9223372036854775807 | 不能超过这个区间 | |
float(单精度) | 4个字节 精度:6-7位 | |||
double(双精度) | 8个字节 | 精度:14-16位 | ||
char(字符型) | 2个字节 | 一个正整数(0- | ||
65535) | 可以参与四则运算 | |||
boolean(逻辑型 | ||||
布尔型) | 分配1个字节(实际 | |||
存储1位) | rue/false | true和false是关 | ||
键词 | ||||
引用数据类型 | 类 class | |||
接口 | ||||
数组[] | ||||
… |
注意事项
- 在java中所有的整数的默认类型都是int,当我们将一个超过int范围的整数值给long类型的变量的时候会报错.解决办法:将字面值后面加"l"或者是"L"(推荐加L).
- 如果byte或short赋值时,只要直面不超过byte或short的范围就可以赋值.
- 虽然所有整数类型有很小的数也有很大的数,但是有时也会发生不满足的场景,针对一个特别大的数,java中可以采用BigInteger去完成
- 在java中所有的小数的默认类型是double类型,当把一个小数赋值给float类型的变量时,一定要在小数后加"f"或者"F".
- 小数在进行四则运算的时候,会有误差,导致最后的结果可能有问题,要避免通过float或者时double进行四则运算.后期我们会通过BigDecimal去进行小数的四则运算(精度更高).
- char类型的变量在赋值的时候通过一组’ '引起来的单个字符,不能时0个也不能是多个,更不能是双引号(在java中双引号是字符串(String类型)单引号表示的是字符串类型).
- char类型的变量是可以参加四则运算的,原因是实际字符在存储的时候存储的是字符集合中的十进制数,所以char类型的变量的表示的数据是(0-65535).所以char类型赋值时可以直接通过一个正整数赋值.
2. 数据类型的赋值
2.1给整型赋值
二进制赋值
//从jdk1.7之后才有的,以0b、0B开头后跟一个二进制数
int num = 0B1001;
八进制赋值
//以0开头后跟一个8进制的数
int num = 012;
十进制赋值
//正常赋值使用最多
int num = 12;
十六进制赋值
//以0x或者是0X开头 后跟一个16进制数 A->10 B->11 C->12 D->13 E->14 F->15
int num = 3F;
2.2 给小数赋值
正常赋值
double num = 23.12;
科学计数法赋值
double pi = 3.1415e-3;
System.out.println("科学计数法表示pi的值是:"+pi);
注意:
- e和E都可以
- e前面小数最高位,个位必须时0-9之间 可以分正负
- e后面的数必须保证是整数,可以是正负.正 -> 小数点往右移动的数, 负->小数点往左移动的位数.
2.3 逻辑型变量赋值
- 只有两个值.true和false,注意和c不同的是java中的boolean类型不能通过 0 和 1赋值,内存开辟一个字节,但实际只是用1位.
2.4 字符型变量赋值
正常赋值
char ch = 'a';
System.out.println("通过单引号赋值:"+ch);
ch = 65;
System.out.println("通过赋值一个不超过65535的正整数:"+ch);
通过Unicode码进行赋值
char ch = '\u0000';
System.out.println("通过unicode码赋值:"+ch+"----");
2.5转义字符
就是用来转变含义的字符,在java中有一些字符有自己的含义,此时我们需要通过转义字符改变当前字符的含义。
ch = '\t';
System.out.println("显示ch的字符:"+ch+"----");
- \就是java中的转移支付,将(本身的字符t的含义发生改变.\t一个制表符为tab,一个tab键是8个空格).
- 如果前面出现了字符,那么\t会将面前的位数补齐.
System.out.println()
换行输出,注意是下一行换行
System.out.println()
下一行不换行.
\n 换行,将光标移动到下一行换行.
System.out.print("北京欢迎你\n");
System.out.print(",我就想试试");
输出:
北京欢迎你
,我就想试试
转义字符显示 ,",'
System.out.println("\\");
//打印输出"
System.out.println("\"");
2.6 数据类型转换
在java中不同的数据类型之间是可以互相进行转换的.
2.6.1 自动类型转换
大数据类型 变量名 = 小类型变量
public class Demo09{
public static void main(String[] args){
// 声明一个byte类型的变量
byte b = 100;
// 通过自动类型转换将byte类型的变量变为int类型
int num = b;
System.out.println("byte类型的变量b:"+b);
System.out.println("int类型的变量num:"+num);
}
}
- 所有整数都是int类型,但是在给byte和short赋值的时候,只要保证数据在byte和short的范围就可以直接赋值.
自动向上转型
//自动类型提升
double d = 3*12.8F;
System.out.println("最后的计算结果是:"+d);
- 在参与四则运算过程中,数据会自动提升类型;提升规则:
- byte -> short -> int -> long -> float -> double
- char -> int ->long ->float ->double
- boolean不能参与转换,boolean不能参与四则运算
2.6.2 强制类型转换
//将num中的100 填充到b变量中
b = (byte)num;
System.out.println("byte类型的变量b:"+b);
小数据类型 变量名 = 大数据类型;(如果不想让编译器报错,需要强制类型转换.)
小数据类型 变量名 = (小数据类型)大数据类型
强转有风险,转换需谨慎
3.进制
3.1 关于进制
- 所有数字在计算机底层都是以二进制形式存在.
- 对于整数,有四种表示方式
- 二进制:0,1,满二进1.以0b或者0B开头
- 十进制:0-9,满10进1
- 八进制:0-7,满8进1,以数字0开头表示.
- 十六进制:0-9以及A-F,满16进1.以0x或0X开头
3.2二进制
- Java 整数常量默认是 整数常量默认是 整数常量默认是 int int类型,当用二进制定义整数时其第 32 位是符号; 位是符号; 当是 long long 类型时,二进制默认占 64 位,第 64 位是.
- 二进制的整数有如下三种形式:
- 源码:字节将一个数字换成二进制数.最高位是符号位
- 负数的反码:是对源码按位取反,值时最高位(符号位)为1.
- 负数的补码:其反码加1.
- 计算机以二进制补码的形式保存所有整数
3.3 进制间的转换
-
进制的基本转换
- 十进制 二进制转换
- 二进制转成十进制 乘以2的幂数
- 十进制转成二进制 除以2取余 逆向排列
- 二进制 八进制互转
- 二进制十六进制互转
- 十进制 八进制互转
- 十进制 十六进制互转
- 十进制 二进制转换