1.Java的数据类型(基本数据类型和引用数据类型)
基本数据类型:4大类8种
byte b = 10;
// byte b2 = 128; // 越界了,报错
short s = 20;
int i = 30;
// 注意:随便写一个整数字面量默认是int类型的,3342542355555这个数据虽然没有超过long的范围,但是超过了int的范围,所以报错
// 如果希望3342542355555这个数据是long类型,需要显示的指定。加上L或者l
long l1 = 3342542355555L;
long l = 40;
// 2. 浮点型
// 注意:随便写一个浮点数字面量默认是double类型的,如果希望1.1是float类型的,必须加上f或者F
// float f2 = 1.1;
float f = 1.1f;
double d = 2.2;
// 3. 字符型
char c = 'a';
// 4. 布尔型
boolean flag = true;
2.关键字
关键字(Keywords)是具有特殊意义的保留字,如public、class、int......
注意:我们不能用来作为自己的:类名、变量名,否则会报错
3.标识符
标识符是程序员定义的名称,用于类、方法、变量和其他自定义元素。标识符必须遵守以下规则:例如,myVariable
、_value
、$counter
都是有效的标识符,而2values
、class
(关键字)、Case
(与关键字case
区分大小写)不是有效的标识符。
4.功能的最小单元——方法
方法是一种用于执行特定任务或操作的代码块,代表一个功能,可以接受数据进行处理,并返回一个处理后的结构。
4.1方法定义的格式
public class MethodDemo1 {
public static void main(String[] args) {
// 目标:掌握方法的定义和调用。
int sum = getSum(10, 20);
System.out.println("和是: " + sum);
}
// 定义一个方法,求任意两个整数的和并返回
public static int getSum(int a, int b) {
return a + b;
}
}
方法如何被调用?
方法必须被调用才能执行,调用格式:方法名称(数据)
4.2方法的其他形式
考虑:
1.方法是否需要接受数据处理?
2.方法是否需要返回数据?
// 需求:打印3行HelloWorld,不需要参数,也不需要返回值
// 注意:如果方法没有返回结果,返回值类型必须声明成void。
// 无参数,无返回值类型
public static void printHelloWorld() {
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
}
// 需求3:获取一个指定位数的验证码返回。
// 掌握方法的定义格式:
// 需要接收数据吗?需要,需要接收位数。int len
// 需要返回数据吗?需要,返回验证码。String
// 有参数有返回值的方法
public static String getCode(int len) {
String code = "";
for (int i = 0; i < len; i++) {
int num = (int) (Math.random() * 10);
code += num;
}
return code;
}
注意:
如果方法不需要返回数据,返回值类型必须声明成void(无返回值声明)方法内部不可以使用return返回数据
4.3方法的注意事项
4.3.1方法可以重载
一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。
注意:
方法重载只关心方法名称相同,形参列表不同(类型不同,个数不同,顺序不同),其他都无所谓
4.3.2无返回值的方法中可以直接通过单独的return;立即结束当前方法的执行
public class MethodDemo2 {
public static void main(String[] args) {
// 目标:掌握在无返回值的方法中单独使用 return;提前结束方法。
div(a: 10, b: 0);
}
// 设计一个除法的功能。
public static void div(int a, int b) {
if (b == 0) {
System.out.println("除数不能为0");
return; // 提前结束方法。 卫语言方法
}
System.out.println(a / b);
}
}
5.类型转换(存在不同类型的变量赋值给其他类型的变量)
5.1自动类型转换
什么是自动类型转换,为什么要进行自动类型转换?
类型范围小的变量,可以直接赋值给类型范围大的变量。
public class TypeDemo1 {
public static void main(String[] args) {
// 目标:认识自动类型转换,强制类型转换。
byte a = 12;
print(a); // 自动类型转换
print2(a); // 自动类型转换
}
public static void print(int b) {
System.out.println(b);
}
public static void print2(double c) {
System.out.println(c);
}
}
自动转换原理,位数小的直接被赋值给位数大的不会出现偏差。
5.2强制类型转换
强制类型转换(也称为显式类型转换)是指将一个数据类型的值显式地转换为另一个数据类型。这通常在你需要将一个更宽泛范围的类型转换为一个更狭窄范围的类型时使用,因为这种转换可能会导致信息丢失,所以需要程序员显式地进行。
什么是强制类型转换,为什么要进行强制类型转换?
类型范围大的变量, 不可以直接赋值给类型范围小的变量,会报错,需要强制类型转换过去
注意:
强制类型转换可能造成数据(丢失)溢出;浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
5.3表达式的自动类型提升
在Java中,表达式的自动类型提升是指在进行算术运算时,较小的数据类型会自动转换为较大的数据类型,以避免数据丢失。这种转换是由编译器自动完成的,不需要程序员显式地进行类型转换。
// 需求:接收各种类型的数据运算。
public static double calc(int a, int b, double c, char r) {
return a + b + c + r;
}
public static int calc2(byte a, byte b) {
return a + b;
}
public static byte calc3(byte a, byte b) {
byte c = (byte) (a + b);
return c;
}