Java基础笔记(一)
关键字
- 定义:被java赋予特殊含义,用作专门用途的字符串(单词)
- 特点:所有的关键字都是小写
保留字
- 现有java版本尚未使用的字符串,但未来极有可能会使用。因此在编写程序的时候,应当尽量避开。
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
标识符
- 特点: java对各种
变量
、方法
、类
命名使用的字符串 - 更简单的说法是:可以自己命名的地方都是标识符
- 标识符的特点
- 由26个英文字母大小写,数字,_或者$组成。
- 数字不能开头
- 不可以使用关键字保留字
- java语言区分大小写
命令规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
变量类型
基本数据类型(八种)
-
字符
- char
- char表示字符类型,2个字节。char因为有对应的Unicode编码,因此它是可以进行运算的。
- char
-
整数类型
- byte, short, int, long
-
浮点类型
- float, double
- 浮点类型默认是double类型,float要加f或者F
- float, double
-
布尔
- boolean
- 只允许true 或者 false 连个值,没有null
- boolean
各类型取值范围
类型 | 存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -128 ~ 127 |
short | 2 | -215 ~215-1 |
int | 4 | -231 ~ 231-1 |
long | 8 | -263 ~ 263-1 |
float | 4 | -3.403E38 ~ 3.403E38 |
double | 8 | -1.798E308 ~ 1.798E308 |
boolean | true/false |
虽然float是4个字节,long是8个字节,但是float能表述的范围却比long类型的大。这个涉及到底部结构,float一共32位,第一位是符号位表示正负(s),从二位-九位表示指数域(E),剩余23位表示小数域,即M,M的取值范围为[1,2)或[0,1),使用公式V=(-1)^s * M * 2^E进行换算。而long类型表示的是-2的n-1次方到(2的n-1)-1。这样就不难看出float的范围更大。
Java虚拟机中没有任何供boolean值专用的字节码指令,java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示《java虚拟机规范 8版》
基本数据类型转化
graph LR
byte-->int
char-->int
short-->int
int-->long
long-->float
float-->double
- 自动类型转换
- 容量小的类型向容量大的类型转换
- 有多种类型数据混合运算时,会先转化成容量最大的类型
- byte、short、char之间不会相互转换,三者在转换时都转换成int类型
- 当把任何基本类型的值和字符串(String)进行连接运算时(+),基本类型的值将自动转化为字符串类型。
String str1 = 4; //判断对错:no
String str2 = 3.5f + “”; //判断str2对错:yes
System.out.println(str2); //输出:3.5
System.out .println(3+4+“Hello!”); //输出:7Hello!
System.out.println(“Hello!”+3+4); //输出:Hello!34
System.out.println(‘a’+1+“Hello!”); //输出:98Hello!
System.out.println(“Hello”+‘a’+1); //输出:Helloa1
- 强制类型转化
- 自动类型转化的逆过程,可能会造成精度缺失。
public static void main(String[] args) {
float num1 = 3.2f;
int num2 = (int) num1;
System.out.println(num2);
}
结果: 3 缺失了精度
- 字符串可以通过基本数据类型的包装类进行转化(不包含boolean)
String a = "43";
int i = Integer.parseInt(a);
System.out.println(i);
结果: 43
1) short s = 5;
s = s-2; //判断:no
2) byte b = 3;
b = b + 4; //判断:no
b = (byte)(b+4); //判断:yes
3) char c = ‘a’;
int i = 5;
float d = .314F;
double result = c+i+d; //判断:yes
4) byte b = 5;
short s = 3;
short t = s + b; //判断:no
引用数据类型(这些知识点会在以后文章中介绍)
- 接口
- 数组
- 类