目录
一、变量
1. 概念
变量相当于内存中一个数据存储空间的表示。
2. 使用的基本步骤
第一步:声明变量;
第二步:赋值;
第三步:输出。
3. 使用的注意事项
1. 变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同]。
2. 变量在该区域有自己的名称[变量名]和类型[数据类型]。
3. 变量需要先声明,后使用。
4. 该区域的数据/值可以在同一类型范围内不断的变化。
5. 变量在同一个作用域内不能重名。
6. 变量由数据类型+变量名+值组成。
二、程序中 + 号的使用
1. 当左右两边都是数值型时,则做加法运算。
2. 当左右两边有一方是字符串,则做拼接运算。
3. 运算顺序,从左到右。
三、Java数据类型
1. 基本数据类型
(1)数值型
整型类型:存放整型。(byte[1]、short[2]、int[4]、long[8])
使用细节:
① Java各整型类型有固定的范围和字段长度,不受具体OS的影响,使得java程序具有良好的可移植性。
② Java的整型变量(具体值)默认为int型,声明long型常量后加‘l’或‘L’。
③ bit:计算机中最小的存储单位,byte:计算机当中的基本的存储单元,1byte=8bit。
浮点小数类型:(float[4]、double[8])
使用细节:
① 浮点数在机器当中的存放形式:浮点数 = 符号位 + 指数位 + 尾数位。
② 尾数部分可能为丢,造成精度损失(小数都是近似值)。
③ Java各浮点类型有固定的范围和字段长度,不受具体OS的影响,使得java程序具有良好的可移植性。
④ Java的浮点型变量(具体值)默认为double型,声明float型常量,要在常量后面加‘f’或者‘F’。
⑤ 浮点型常量的常用两种表示形式:
十进制形式:如5.12;512.0f;.512(相当于0.512)
科学计数法形式:5.12e2(5.12*10的2次方);5.12E-2(5.12/10的2次方)
⑥ 通常情况下,使用double型,因为它比float型更精确。
⑦ 注意判断是否相等的陷阱,若是直接赋值的两个小数,则可以直接判断是否相等;若是一个要机器计算的小数和一个直接赋值的小数进行判断是否相等就不行了(如2.7和8.1/3),因为机器计算当中会有对精度的不确定性,导致算出来的小数是近似值。
(2)字符型 (char[2])
使用细节:
1. 字符常量是用单引号('')括起来的单个字符。
2. Java中还允许使用转义字符'\'来将其后的字符转变为特殊字符型常量。例如 char b = '\n',其中'\n'表示换行符。
3. 在Java中,char的本质是一个整数,在输出时,是unicode码对应的字符。
4. 字符类型可以直接存放一个数字。例如 char a = 97(输出的就是字母a,这是编码的概念)
5. char类型可以进行运算的,相当于一个整数,因为它都有对应的Unicode码。
//例如
int n1 = 'a' + 10;
System.out.println(n1);//输出98
char n2 = 'a' + 1;
System.out.println(n2);//输出b
System.out.println(int(n2));//99
(3)布尔型 存放true、false。(boolean[1])
使用细节:
1. 布尔类型也叫做boolean类型,其数据只允许取值 true 和 false ,无 null ,并且不允许使用 0 和非 0 的整数来代替 true 和 false(与C语言不同)。
2. boolean 类型占1个字节。
3. boolean 类型适于逻辑运算,一般用于程序流程控制。(if条件控制语句;while循环控制语句;do-while循环控制语句;for循环控制语句)
2. 引用数据类型(未讲)
1. 类(class)
2. 接口(interface)
3. 数组([])
四、Java的API文档
1. API(应用程序编程接口)是Java提供的基本编程接口(Java提供的类还有相关的方法)。可以查看matools.com。
2. Java语言提供了大量的基础类。
五、字符编码表
1. ASCII:一个字节表示,一共128个字符(实际上一个字节可以表示256个字符,它只用了128个)。
2. Unicode:字母和汉字同意都是占用两个字节,有点浪费空间。
3. utf-8:字母使用一个字节,汉字使用三个字节。
4. gbk:字母使用一个字节,汉字使用两个字节。
5. gb2312:其可以表示的汉字数量少于gbk。
6. big5码:繁体中文。
五、基本数据类型转换
1. 自动数据类型转换
① char → int → long → float → double
② byte → short → int → long → float → double
细节注意:
1. 在有很多类型的数据混合运算时,系统首先自动将所有数据转换为容量最大的那种数据类型,然后再进行计算。
int n1 = 10; //正确,因为默认数字是int型
float d1 = n1 + 1.1; //错误,因为1.1默认是double型
float d1 = n1 + 1.1F; //正确
double d1 = n1 + 1.1; //正确
2. 当我们把精度(容量)大得数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
3. (byte,short)和 char 之间不会相互自动转换。
byte b1 = 10; //正确,因为byte的范围在-128~127内,因为10在这个范围,故可以.
char c1 = b1; //错误,因为byte不能自动转为char.
/******************/
int n2 = 1;
byte b2 = n2; //错误,因为int不能转为byte
4. byte,short,char 他们三者可以计算,但在计算时会首先转换为int类型。(主要有一个出现就转换为int型)
5. boolean 不安加转换。
6. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
2. 强制数据类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但是有可能造成精度降低或者数据溢出。
int n1 = int(1.9);
System.out.println("n1=" + n1); //输出为n1=1 精度损失
int n2 = 2000;
byte b1 = (byte)n2;
System.out.println("b1=" + b1); //输出为b1=-48 数据溢出
使用细节:
1. 当进行数据的大小从大到小时,就需要用到强制转换。
2. 强制符号只针对最近的操作时有效,往往会使用小括号提升优先级、
3. char类型可以保存 int 的常量值,但是不能保存 int 的变量值,需要强转。
char c1 = 100; //正确
int m = 100; //正确
char c2 = m; //错误,因为int类型不能直接自动转换为char类型
char c3 = char(m); //正确,加了强制类型转换符号()
4. byte 和 short ,char 类型在进行运算时,当作 int 类型处理。
3. 基本数据类型和String类型的转换
① 基本数据类型转 String 类型
语法:将基本类型的值 + ""即可。
int n1 = 100;
float n2 = 1,1f;
double n3 = 3.4;
boolean b1 true;
char c1 = 'li';
String str1 = n1 + "";
String str2 = n2 + "";
String str3 = n3 + "";
String str4 = b1 + "";
String str5 = c1 + "";
② String类型转基本数据类型
语法:通过基本数据类型的包装类调用parseXX方法即可。
Integer.parseInt("123");
Double.parseDouble("123");
Float.parseFloat("123.45");
Short.parseShort("12");
Long.parseLong("12");
Boolean.parseBoolean("true");
Byte.parseByte("12");
//对于字符类型char来说,若有一个字符串S5
S5.charAt(0)//可得到S5字符串的第一个字符