基本数据类型
Java是一种强类型语言,每个变量都必须声明其数据类型。
Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
PS:巧妙记忆:除了基本数据类型以外的所有类型都属于引用数据类型,本章重点:基本数据类型
整数类型
整数类型常量
十进制整数,如:99, -500, 0
八进制整数,要求以 0 开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
几进制:就是逢几进1的问题:
平时实际生活中用的最多的是:十进制
计算机用二进制最多
扩展:进制转换问题
【1】二进制转换为十进制:
二进制: 1101
1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
= 8 + 4 + 0 + 1
= 13
【2】十进制转换为二进制:
十进制 13
【3】八进制转换十进制:
八进制: 16
1*8^1 + 6*8^0
= 8 + 6
=14
【4】十进制转换为八进制:
十进制14:
【5】八进制转换为十六进制:
把十进制当做一个中转站:
八进制---》十进制---》十六进制
实际上根本不用自己转换这么麻烦:我们可以直接用系统中提供给我们的计算器:
整数类型变量
整型数据类型:
比如:byte的右侧表数范围127怎么算出来的?
byte: 1字节 = 8位
二进制:01111111
1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
= 64 + 32 + 16 +8 +4 + 2 +1
= 127
代码:
- public class TestVar05{
- public static void main(String[] args){
- //定义整数类型的变量:
- //给变量赋值的时候,值可以为不同进制的:
- int num1 = 12 ;//默认情况下赋值就是十进制的情况
- System.out.println(num1);
- int num2 = 012;//前面加上0,这个值就是八进制的
- System.out.println(num2);
- int num3 = 0x12;//前面加上0x或者0X,这个值就是十六进制的
- System.out.println(num3);
- int num4 = 0b10;//前面加上0b或者0B,这个值就是二进制的
- System.out.println(num4);
- //定义byte类型的变量:
- byte b = 126;//定义了一个byte类型的变量,名字叫b,赋值为12
- System.out.println(b);
- //注意:超范围的赋值会报错。
- short s = 30000;
- System.out.println(s);
- int i = 1234;
- System.out.println(i);
- //整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了
- //要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
- long num5 = 12345678910L;
- System.out.println(num5);
- //注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:
- long num6 = 12;
- System.out.println(num6);
- }
- }
浮点类型
浮点类型常量
(1)十进制数形式,例如:
3.14 314.0 0.314
(2)科学记数法形式,如
314e2 314E2 (E的大小写没有区分) 314E-2
double f = 314e2; //314*10^2-->31400.0
double f2 = 314e-2; //314*10^(-2)-->3.14
浮点类型变量
float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。
也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
PS:有效数字指的是从左开始第一个不为0的数到最后一个数
代码:
- public class TestVar06{
- public static void main(String[] args){
- //浮点类型的常量有两种形式:
- //十进制形式:
- double num1 = 3.14;
- System.out.println(num1);
- //科学计数法形式:
- double num2 = 314E-2;
- System.out.println(num2);
- //浮点类型的变量:
- //注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f
- float f1 = 3.14234567898623F;
- System.out.println(f1);
- //注意:double类型后面可以加D或者d,但是一般我们都省略不写
- double d1 = 3.14234567898623D;
- System.out.println(d1);
- //注意:我们最好不要进行浮点类型的比较:
- float f2 = 0.3F;
- double d2 = 0.3;
- System.out.println(f2==d2);
- /*
- 区别:
- = 赋值运算: 将等号右侧的值赋给等号左侧
- == 判断==左右两侧的值是否相等 :结果要么相等 要么不相等
- ==运算符的结果就是要么是true,要么是false
- */
- }
- }
字符类型
【1】Java中使用单引号来表示字符常量,字符型在内存中占2个字节。
char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
【2】转义字符:
【3】ASCII表:
【4】Unicode编码表:
https://www.cnblogs.com/csguo/p/7401874.html
代码1:
- public class TestVar07{
- public static void main(String[] args){
- //定义字符类型的变量:
- char ch1 = 'a';
- System.out.println(ch1);
- char ch2 = 'A';
- System.out.println(ch2);
- char ch3 = '4';
- System.out.println(ch3);
- char ch4 = '中';
- System.out.println(ch4);
- char ch5 = '?';
- System.out.println(ch5);
- //java中无论:字母,数字,符号,中文都是字符类型的常量,都占用2个字节。
- char ch6 = ' ';
- System.out.println(ch6);
- //字符类型:单引号引起来的单个字符
- System.out.println("--------------------------------");
- /*
- 转义字符:
- \将后面的普通字符转换为特殊含义
- */
- char ch7 = '\n';
- System.out.println("aaa"+ch7+"bbb");
- System.out.println("aaa\nbbb");// \n 换行
- System.out.println("aaaaaaa\tbbb"); // \t 制表符
- System.out.println("aaa\bbbb");//aabbb \b 向前退一格
- System.out.println("aaa\rbbb");//bbb \r 将光标到本行开头 :回车
- System.out.println("\"java\""); // \" 将双引号原样输出 \' 将单引号原样输出 \\ 将\原样输出
- }
- }
代码2:
- public class TestVar08{
- public static void main(String[] args){
- char ch1 = 'A';
- System.out.println(ch1);//A
- System.out.println(ch1+90);//155
- System.out.println(155-ch1);//90
- //char类型我们看到的样子就是它本身的字面常量,但是底层在进行计算的时候,实际上是按照一个码进行计算的。
- //这个码就是ASCII
- //之前说char类型是按照Unicode码表进行存储的 (Unicode兼容了ASCII码,Unicode的前128位置ASCII)
- char ch2 = '中';
- System.out.println(ch2);// 中
- System.out.println(ch2+90);// 20103
- System.out.println(20103-ch2);// 90
- //转换:
- int num1 = (int)ch2;
- System.out.println(num1);//20013
- char ch = (char)20013;
- System.out.println(ch);
- int num2 = '中';
- char ch5 = 20013;
- System.out.println(ch5);
- //面试题:
- char ch6 = '2'+2;
- System.out.println(ch6);//'4'--->4
- }
- }
布尔类型
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。
- public class TestVar09{
- public static void main(String[] args){
- //创建一个布尔类型的变量:
- boolean flag1 = true;
- System.out.println(flag1);
- boolean flag2 = false;
- System.out.println(flag2);
- boolean flag3 = 5==9;
- System.out.println(flag3);
- boolean flag4 = 5<9;
- System.out.println(flag4);
- }
- }