🐵本文将对Java的一些基本名称和基本数据类型进行讲解
1. 第一个Java程序
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
public class Hello
被class修饰的称为类,而当类被public修饰时,类名必须和该源文件的文件名相同,一个文件中可以有多个类,但是只能有一个被public修饰的类
public static void main(String[] args) {
...
}
这条语句称为类中的一个方法,void是方法的返回值类型,main是方法名,()中的是参数列表,String[] args是一个数组,String[]是数组的类型,大括号中的内容称为方法体,一个Java应用程序中必须有且仅有一个main()方法,而且必须用public、static进行修饰
System.out.println("Hello World");
这是Java当中的打印语句,语句中println会在打印完内容后自动换行,如果不想换行可以不加ln,这条语句打印的内容是一个字符串,在Java中字符串没有以'\0'结尾的说法
2. Java程序的运行
我们写代码的文件称为源文件(.java),源文件经过编译生成字节码文件(.class)字节码:字节码文件是由字节码组成与平台无关、面向JVM(Java虚拟机)的文件;.class文件通过JVM转换成平台能理解的形式来运行
3. 注释
单行注释://注释内容(用的最多)
多行注释:/*注释内容*/
文档注释:/**注释内容*/
4. 标识符
标识符中只能包含数字、字母、下划线、$,且不能以数字开头、不能是关键字、区分大小写
5. 数据类型
在Java中数据类型分为基本数据类型和引用数据类型
5.1 基本数据类型
基本数据类型有4种:整型、浮点型、字符型、布尔型
1.无论在多少位操作系统下,int都占4个字节,long都占8个字节
2.整形和浮点型都是有符号类型,和C语言不一样,没有无符号类型这一说法
3.整形默认为int,浮点型默认为double
整形:int(整形)、short(短整型)、long(长整型)、byte(字节型)
浮点型:float(单精度浮点型)、double(双精度浮点型)
字符型:char(字符型)
布尔型:bool(布尔型)
5.2 引用数据类型
引用数据类型包含String、数组、接口等,该类型今后再做讲解
6. 变量
变量概念和和语法格式和C语言基本一致:数据类型 变量名 = 初始值
6.1 整型变量
6.1.1 int
int a = 4;//占4个字节
System.out.println(a);
int b;
System.out.println(b);//如果变量不进行初始化,那么代码在编译期间就会报错
//打印int的最大值和最小值
System.out.println(Integer.MAX_VALUE);//Integer为int的包装类型,后期会进行讲解
System.out.println(Integer.MIN_VALUE);
int c = 1000000000000000000;//如果初始值大于int型的最值也会在编译期间报错
整形范围:-2^31~(2^31)-1
6.1.2 long
long a = 8L; //对长整型变量赋值时后面加上l或L,建议用L
System.out.println(a);//占8个字节
//打印long的最大值和最小值
System.out.println(Long.MAX_VALUE);//Long为long的包装类型
System.out.println(Long.MIN_VALUE);
长整型范围:-2^63~(2^63)-1
6.1.3 short
short a = 2;//占2个字节
System.out.println(a);
//打印short的最大值和最小值
System.out.println(Short.MAX_VALUE);//Short为short的包装类型
System.out.println(Short.MIN_VALUE);
短整型范围:-32768 ~ 32767
6.1.4 byte
byte a = 1;//占1个字节
System.out.println(a);
//打印byte的最大值和最小值
System.out.println(Byte.MAX_VALUE);//Byte为byte的包装类型
System.out.println(Byte.MIN_VALUE);
字节型范围:-128 ~ 127
6.2 浮点型变量
6.2.1 double
double a = 3.14;//占8个字节
double b = 1;
System.out.println(a);
System.out.println(b);
double a = 1.1;
System.out.println(a*a);
//结果为1.2100000000000002,因为浮点型在内存中的存储方式不同
//在《深度剖析数据在内存中的存储》中有详细讲解
duoble的包装类型是Double,double也有范围但一般不去讨论
6.2.2 float
float a = 1.5f;//对单精度浮点型变量赋值时后面加上f或F
System.out.println(a);//占4个字节
float表示的数据精度范围较小,一般在使用浮点数时优先考虑double,float的包装类型为Float
6.3 字符型变量
6.3.1 char
char a = 'a'; //占2个字节
char b = '1';
char c = '猿';
System.out.println(a);//char的包装类型时Character
System.out.println(b);
System.out.println(c);
字符在内存中是以整形的形式存储的,在C语言中用ASCII来表示字符,而在Java中用Unicode来表示字符(Unicode中的字符占2个字节),一个字符占两个字节,可以表示更多的字符,包括中文
6.4 布尔型变量
6.4.1 boolean
boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);//boolean的包装类型是Boolean
布尔型变量的取值只能是true和false,而且和0、1没有关系,不存在true是1,false是0的说法;boolean型变量和int型变量不能相互转换
b = false;
System.out.println(b + 1); //这样写会在编译期间报错
boolean变量没有明确占几个字节
7. 类型转换
类型转换分为2种:自动类型转换(隐式)和强制类型转换(显式)
7.1 自动类型转换(隐式)
数据范围小的转为数据范围大的时,编译器在编译期间会将其自动类型转换,我们看不到
int a = 10;
long b = 100L;
a = b; //编译报错
b = a; //将a自动转换为long类型
System.out.println(b);
float c = 1.2f;
double d = 3.14;
c = d; //编译报错
d = c; //将c自动转换为double类型
7.2 强制类型转换(显示)
当数据大的类型转为数据小的类型时可以手动进行类型转换,和C语言一样
int a = 10;
long b = 100L;
a = (int)b;//范围大的数据赋值给范围小的数据要进行强制类型转换
byte c = (byte)258;//超过该类型的范围也要强制类型转换
boolean d = true;
//a = (int)d; //这里无论是否进行强制类型转换都会报错
强制类型转换不一定能成功,不相干的类型不能强制类型转换
8. 类型提升
1. int与long进行计算时int会被提升为long
int a = 10;
long b = 20L;
long c = a + b;//a会被提升为long后进行计算
2. byte与byte
byte a = 1;
byte b = 2;
byte c = (byte)(a + b);//当运算符两边的操作数小于4字节时,操作数会被提升为int再进行计算,因此要对计算结果进行强转