快捷键
psvm :快速声明main方法(程序入口)
public static void main(String[] args){}
sout :快速声明系统输出语句 System.out.println()
soutv :打印一个值
soutm :打印类中某个方法名
soutp :打印方法的参数名和参数值
1、变量
概念
计算机中能够存储计算结果或能够表达值得一个抽象概念
变量:是会变化的量,本质上是一个在内存中一个存储单元(存储的就是数据)
声明创建
数据类型 变量名 = 变量值
例如:int a = 10;
使用注意事项
1、变量的值是可以变换的
2、变量名在同一个作用域内是唯一的,不能多次创建同名的变量
3、变量要先创建,再使用
4、变量需要进行初始化赋值才能使用
变量应用的总结
总结:
对于变量的赋值操作,需要看变量名前面的数据类型
若数据类型的地方写的是int,则表示这个变量名只能存储整数类型的值
若数据类型的地方写的是double,则表示这个变量名能存储小数类型的值
若数据类型的地方写的是String,则表示这个变量名能存储字符串类型的值
注意:字符串类型的值可以是整数、小数、字母、中文内容
凡是使用双引号引起来的内容,我们都叫字符串
2、基本数据类型
在Java中数据类型分为两大类:①基本数据类型 ②引用数据类型
基本数据类型:里面有8个类型,分别为:整数类型、小数类型、布尔类型、字符类型
类型 | 具体类型 |
---|---|
整数类型 | byte、short、int、long |
小数类型 | float、double |
布尔类型 | boolean |
字符类型 | char |
上面的类型中没有String,因为String类型不是基本数据类型,属于引用数据类型
注意:对于Java中任何类型而言,只要它不属于基本数据类型范围内,那么它就是引用数据类型
整数类型
数据类型 | 类型含义 | 字节个数 | 取值范围 |
---|---|---|---|
byte | 字节类型 | 1个字节(8位bit) | -27~27-1(-128~127) |
short | 短整型 | 2个字节(16位bit) | -215~215-1 |
int | 整型 | 4个字节(32位bit) | -231~231-1 |
long | 长整型 | 8个字节(64位bit) | -263~263-1 |
System.out.println("byte类型的最大值" + Byte.MAX_VALUE);
System.out.println("byte类型的最小值" + Byte.MIN_VALUE);
System.out.println("short类型的最大值" + Short.MAX_VALUE);
System.out.println("short类型的最小值" + Short.MIN_VALUE);
System.out.println("int类型的最大值" + Integer.MAX_VALUE);
System.out.println("int类型的最小值" + Integer.MIN_VALUE);
System.out.println("long类型的最大值" + Long.MAX_VALUE);
System.out.println("long类型的最小值" + Long.MIN_VALUE);
注意:
1、赋值的时候需要注意,不要超过类型的范围,否则就会报错
2、声明创建long类型数据的时候,若值超过int类型的范围,则需要在值的后面添加L或l
3、在Java中使用的任何整数数字,都会被默认识别为int类型
小数类型(浮点类型)
数据类型 | 类型含义 | 字节个数 | 取值范围 | 精度问题 |
---|---|---|---|---|
float | 单精度浮点类型 | 4个字节(32bit) | 1.4E-45~3.4028235E38 | 小数点后保留7位 |
double | 双精度浮点类型 | 8个字节(64bit) | 4.9E-324~1.7976931348623157E308 | 小数点后保留15位 |
System.out.println("float类型的最大值 = " + Float.MAX_VALUE);
System.out.println("float类型的最小值 = " + Float.MIN_VALUE);
System.out.println("double类型的最大值 = " + Double.MAX_VALUE);
System.out.println("double类型的最小值 = " + Double.MIN_VALUE);
注意:
1、声明创建float类型数据的时候,需要在值的后面添加F或f
2、在Java中所写的所有小数,默认都是double类型
3、float和double类型进行运算时会出现精度丢失的问题,可以通过BIGDecimal解决精度丢失的问题
布尔类型
数据类型 | 类型含义 | 字节个数 | 取值范围 |
---|---|---|---|
boolean | 判断 | 1个字节 | true false |
注意:
1.boolean类型一般用于判断,判断某个条件是否成立(①成立,②不成立) if条件判断
2.boolean类型的数据只能取true或者false,不能为其他的内容
字符类型
数据类型 | 类型含义 | 字节个数 | 取值范围 |
---|---|---|---|
char | 单个字符 | 2个字节 | \u0000 ~ \uffff |
注意:
1.char类型的数据需要使用单引号引起来,只能存放单个数据(一个字母、一个数字、一个中文)
2.char类型的值是可以进行运算的
//创建一个char类型的变量
// char 单个字符
//第一种创建方式
char c1 = '1';
char c2 = 'a';
char c3 = '我';
System.out.println("c1 = " + c1);
System.out.println("c2 = " + c2);
System.out.println("c3 = " + c3);
//第二种创建方式
//ASCII码表 ---> 是把数字、符号、字母分别映射为一个数字
char c4 = 126;
System.out.println("c4 = " + c4);
//第三种创建方式
char c5 = '\u0000';//空格
char c6 = '\u1635';
char c7 = '\uffff';
System.out.println("c5 = " + c5);
System.out.println("c6 = " + c6);
System.out.println("c7 = " + c7);
转义字符
转义字符 | 含义 |
---|---|
\n | 换行 |
\t | 制表符tab 4个空格 |
\b | 退格 backspace |
\r | 将鼠标移动到下一行开头的位置 |
System.out.println("静夜思\n\t作者:李白\n床前明月光\n疑是地上霜\n举头望明月\n低头思故乡\n ");
3、数据类型转换
在基本数据类型中除了boolean类型之外,其他的数据类型可以自动转换成其他的类型,需要遵守其如下的规则:
char
byte ---> short ---> int ---> long ---> float ---> double
1 2 4 8 4 8
上面的规则中,从左往右,其数据类型是可以自动转换的;例如:byte类型可以自动转换为int类型
从右往左,其数据类型是不可以自动转换的,需要我们手动进行转换;例如:double类型需要手动转换为int类型
数据类型转换可以分为两类:
1.自动类型转换:把小的类型转换为大的类型
//创建一个byte类型的变量,存储的值为100
byte b = 100;
//创建一个int类型的变量,存储的值为变量b的值
//byte ----> int
int i = b;
System.out.println("i = " + i);
//创建一个double类型的变量,存储的值为变量b的值
//对于double类型的变量而言,之前我们设置的值都是带有小数点的,
// 其实也可以设置一个整数值,只不过会在整数值的后面添加一个.0 来表示这是一个小数
//byte ----> double
double d = b;
System.out.println("d = " + d);
int number1 = 15;
short number2 = 3;
//当有两个不同类型的数据进行运算时,所得到的结果的类型就是两个类型中较大的那个类型
int result = number1 + number2;
System.out.println(number1 + number2);//18
2.强制类型转换:把大的类型转换为小的类型
//创建一个int类型变量,存储的数据为15
int i = 15;
//创建一个byte类型的变量,存储的数据为变量i的值
// int ----> byte
//报错的原因:int类型的数据赋值给了byte类型的变量,类型不一致
//解决办法:需要使用() 强制转换符号(造型符号)
byte b = (byte)i;
System.out.println("b = " + b);
//原因:int类型数据赋值给了short类型的变量,大的类型赋值给小的类型
//需要把int类型转换为short类型的,所有需要在()里面填写short类型
short s = (short) i;
//把变量i的值赋值给变量d
//int ----> double
double d = i;
double d2 = 3.9999;
int number = (int)d2;
//把变量d2的值强制转换为int类型的数据,就是从小数变成整数
//只会保留整数部分,小数部分直接丢掉不要,不是四舍五入
System.out.println("number = " + number);//3
//重新给变量d2赋值
d2 = 128;
//double ---> byte
byte b2 = (byte) d2;
System.out.println("b2 = " + b2);//-128
//整数会被默认为int类型
int result1 = 3555 / 1000 * 1000;
System.out.println("result1 = " + result1);//3000
double result2 = 3555 / 1000 * 1000;
System.out.println("result2 = " + result2);//3000.0
double number3 = 3555;
int number4 = 1000;
System.out.println(number3 / number4 * number4);//3555.0
总结:使用强制类型转换时,会出现数据丢失的情况,一般尽量避免使用
4、进制的转换
生活中:十进制
电脑中:二进制、八进制、十六进制
十进制转二进制
129 ----->10000001
对2取余数
二进制转十进制
10110110 ----->182
0*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 1*2^5 + 0*2^6 + 1*2^7 =2+4+16+32+128=182
二进制转换为八进制
从最低位(最右边)开始 ,每三个数为一位 使用421进行求和
110010101 ---------> 625
110 010 101
421 421 421
--------------------
6 2 5
1011010110 ---------> 1326
001 011 010 110
421 421 421 421
--------------------
1 3 2 6
八进制转二进制
把八进制中的每一个数使用421进行运算,分解看是由哪几个求和得到的
625 ---------->110010101
6 2 5
421 421 421
110 010 101
516 ----> 101001110
5 1 6
421 421 421
-----------------------
101 001 110
二进制转换为十六进制
记住:从最低位(最右边)开始 ,每四个数为一位 使用8421进行求和
001011010111 ----> 2d7
0010 1101 0111
8421 8421 8421
----------------------------
2 d 7
11100110011 ----> 733
0111 0011 0011
8421 8421 8421
---------------------------
7 3 3
十六进制转换为二进制
把十六进制中的每一个数使用8421进行运算,分解看是由哪几个数求和得到的
F27 ----> 1111 0010 0111
F 2 7
8421 8421 8421
---------------------------
1111 0010 0111
2b ----> 0010 1011
2 b
8421 8421
---------------------
0010 1011
剩下的十进制转换为八进制或转换为十六进制
以及反过来八进制或十六进制转换为十进制的这两种情况
都需要先转换为二进制之后,再去进行转换