目录
1.1 基本数据类型(Primitive Data Types)
1.2 引用数据类型(Reference Data Types)
一、简介
本文主要是帮助大家简单复习java基础知识点。主要内容包括,数据类型和变量、运算符和表达式、控制流程、数组等。
二、知识点
1. 数据类型和变量
1.1 基本数据类型
Java中的基本数据类型有整型(int, long, short, byte),浮点型(float, double),字符型(char),布尔型(boolean)等,具体的介绍见下表。
数据类型 | 位数 | 默认值 | 取值范围 | 举例 |
byte | 8 | 0 | -2^7 ~ 2^7 | byte a = 10; |
short | 16 | 0 | -2^15 ~ 2^15 | short b = 10; |
int | 32 | 0 | -2^31 ~ 2^31 | int c = 10; |
long | 64 | 0 | -2^63 ~ 2^63 | long d = 10l; |
float | 32 | 0.0 | -2^31 ~ 2^31(可精确到7位小数) | float e = 10.0f; |
double | 64 | 0.0 | -2^63 ~ 2^63(可精确到15位小数) | double f = 10.0d; |
char | 16 | 空字符 | 0 ~ 2^16 - 1 | char g = 'g'; |
boolean | 8 | false | true、false | boolean h = true |
这里面值得一提的是,在 Java 中,char
类型的默认值是空字符(null character)\u0000
。如果一个 char
类型的变量没有被显式地赋予一个值,那么它将被自动初始化为空字符。
// 通过以下代码来验证
char c;
System.out.println(c);
//这段代码将打印出空字符 \u0000。
请注意,空字符和空串是不同的概念。空字符表示一个字符位置为空,而空串则表示一个字符串没有任何字符。在 Java 中,空串可以通过 ""
或 String
类的 isEmpty()
方法来表示。
1.2 引用数据类型
引用数据类型是指通过引用来访问和操作的数据类型。Java的引用数据类型包括类(Class)、接口(Interface)和数组(Array)。
1. 类(Class):
- 类是Java中最基本的引用数据类型,用于定义对象的属性和行为。
- 类可以包含成员变量、构造方法、普通方法和静态方法等。
- 通过实例化类,可以创建对象并访问对象的属性和方法。
2. 接口(Interface):
- 接口是一种抽象类型,用户定义类应该具有的方法
- 接口可以包含常量和抽象方法,不包含具体实现
- 类可以实现(implement)一个或多个接口,实现接口的类需要提供接口中定义的方法的具体实现。
3. 数组(Array)
- 数组是一种用于存储多个相同类型数据的容器。
- 数组可以是一维、二维或多维的。
- 使用数组时,可以通过索引访问和修改数组中的元素。
// 类示例
class Person {
String name;
int age;
void displayInfo() {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
Person person1 = new Person();
person1.name = "John";
person1.age = 25;
person1.displayInfo();
// 接口示例
interface Drawable {
void draw();
}
class Circle implements Drawable {
public void draw() {
System.out.println("Drawing a circle");
}
}
Circle circle = new Circle();
circle.draw();
// 数组示例
int[] numbers = { 1, 2, 3, 4, 5 };
String[] names = { "John", "Alice", "Bob" };
System.out.println(numbers[0]); // 输出:1
System.out.println(names[2]); // 输出:"Bob"
这些基本数据类型可以用于存储不同范围和类型的数据。你可以根据具体的需求选择适当的数据类型。
1.3 声明和初始化变量
Java要求在使用变量之前必须先声明它们,并且每个变量只能声明一次。在声明变量时,需要指定变量的数据类型,它决定了变量可以存储的值的类型和范围。
// 声明和初始化整数类型变量
int age;
age = 25;
// 合并声明和初始化字符串类型变量
String name = "John";
// 声明多个变量并初始化
int x, y, z;
x = 1;
y = 2;
z = 3;
// 声明并初始化变量,使用常量表达式计算值
final double PI = 3.14159;
double radius = 5.0;
double area = PI * radius * radius;
在声明和初始化变量时,要注意以下几点:
- 变量名必须是合法的标识符,遵循命名规范。
- 变量名应具有描述性,以便于代码的可读性。
- 变量在使用之前必须先声明,并按需进行初始化。
- 变量的数据类型决定了可以存储的值的类型和范围。
1.4 类型转换和类型提升
在Java中,类型转换是指将一个数据类型的值转换为另一个数据类型。Java支持两种类型转换:自动类型转换(类型提升)和强制类型转换。
1. 自动类型转换(类型提升)
- 自动类型转换是指将一种低精度的数据类型自动转换为高精度的数据类型,而不会丢失数据。
- 转换过程是隐式的,不需要进行额外的操作。
- 类型转换的方向必须是从低精度到高精度的。
int numInt = 100;
double numDouble = numInt; // 自动将int类型转换为double类型
System.out.println(numDouble); // 输出:100.0
2. 强制类型转换
- 强制类型转换是指将一种高精度的数据类型转换为低精度的数据类型。
- 转换过程需要显式地进行,使用强制类型转换运算符
(类型)
。 - 强制类型转换可能会导致数据丢失或溢出,因此需要注意转换的可行性和安全性。
示例:
double numDouble = 3.14;
int numInt = (int) numDouble; // 强制将double类型转换为int类型
System.out.println(numInt); // 输出:3
需要注意以下几点:
- 类型转换只能在兼容的数据类型之间进行。
- 在进行强制类型转换时,可能会发生数据溢出或精度丢失,需谨慎使用。
- 一般情况下,Java会自动进行类型提升,无需显式转换。
在进行类型转换时,建议注意数据的精度和范围,以确保转换的正确性和安全性。
2. 运算符和表达式
2.1 算术运算符
加法(+)
、减法(-)
、乘法(*)
、除法(/)
、取模(取余数)(%)
、自增(++)
、自减(--)
int a = 5;
int b = 2;
int sum = a + b; // 加法运算
int difference = a - b; // 减法运算
int product = a * b; // 乘法运算
int quotient = a / b; // 除法运算
int remainder = a % b; // 取模运算
2.2 逻辑运算符
逻辑与(&&)、逻辑或(||)、逻辑非(!)
int a = 5;
int b = 2;
boolean logicalAnd = (a > 0) && (b < 10); // 逻辑与运算
boolean logicalOr = (a > 0) || (b < 10); // 逻辑或运算
boolean logicalNot = !(a > 0); // 逻辑非运算
2.3 比较运算符
相等比较(==)、
不等比较(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
int a = 5;
int b = 2;
boolean isGreater = a > b; // 大于比较
boolean isEqual = a == b; // 相等比较
2.4 条件运算符
条件表达式:condition ? expression1 : expression2
int result = (a > b) ? a : b; // 条件运算符
2.5 赋值运算符
简单赋值(=)
、复合赋值(例如,加法赋值:+=
,减法赋值:-=
,乘法赋值:*=
等)
int a = 5;
int b = 2;
a += a;
b -= b;
a *= a;
b /= b;
2.6 位运算符
按位与(&)
、按位或(|)
、按位异或(^)
、按位取反(~)
、左移(<<)
、右移(>>)
、无符号右移(>>>)
int a = 5;
int b = 2;
int bitwiseAnd = a & b; // 按位与运算
int bitwiseOr = a | b; // 按位或运算
int bitwiseEOr = a ^ b; // 按位异或运算
int bitwiseNot = ~a; // 按位取反
int leftShift = a << 2; // 左移
int rightShift = a >> 2; // 右移
int unsignedRightShift = a >>> 2; // 无符号右移
2.7 instanceof 运算符
检查对象是否是指定类或其子类的实例:object instanceof Class
boolean instanceCheck = (a instanceof Integer); // instanceof 运算符
3. 流程控制
Java中的流程控制用于控制程序的执行顺序,根据条件或循环来决定程序的分支和重复执行。
3.1 条件语句
- if语句:根据条件判断是否执行某段代码块。
- if-else语句:根据条件判断执行不同的代码块。
- if-else if-else语句:根据多个条件判断执行不同的代码块。
int num = 10;
if (num > 0) {
System.out.println("num是正数");
} else if (num < 0) {
System.out.println("num是负数");
} else {
System.out.println("num是零");
}
3.2 循环语句
- for循环:指定循环的初始条件、循环条件和迭代语句,控制循环的次数。
- while循环:在循环开始前判断循环条件,满足条件则执行循环体,循环结束后再次判断条件。
- do-while循环:先执行循环体,再判断循环条件,满足条件则继续执行循环体。
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
int i = 0;
do {
System.out.println(i);
i++;
} while (i < 5);
3.3 分支语句
- break语句:用于跳出循环或switch语句。
- continue语句:用于跳过当前循环中的剩余代码,继续下一次循环。
- return语句:用于结束方法的执行,并返回结果(如果有)。
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
public int add(int a, int b) {
if (a < 0 || b < 0) {
return -1;
}
return a + b;
}
3.4 switch语句
根据表达式的值选择执行不同的代码块。
int dayOfWeek = 2;
switch (dayOfWeek) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
default:
System.out.println("其他");
break;
}
4. 数组
4.1 声明和初始化数组
1. 声明数组:声明数组需要指定数组的类型和名称。
// 语法:dataType[] arrayName; 或者 dataType arrayName[]
int[] numbers;
int numbers[];
2. 创建数组对象:使用关键字 new
来创建数组对象,并指定数组的长度。
// 语法:arrayName = new dataType[arrayLength];
numbers = new int[5];
3. 初始化数组元素:使用索引(从0开始)来访问数组的元素,并为其赋值。
// 语法:arrayName[index] = value;
numbers[0] = 10;
// 语法:dataType[] arrayName = {value1, value2, value3, ...};
int[] numbers = {10, 20, 30, 40, 50};
注意事项:
- 数组长度表示数组可以容纳的元素个数,一旦确定,无法更改。
- 数组的索引从0开始,最大索引为长度减1。
- 可以使用循环结构来遍历数组,访问和处理数组中的元素。
4.2 访问和修改数组元素
在Java中,可以使用索引访问和修改数组元素。索引是从0开始的整数,用于表示数组中的元素位置
1. 访问数组元素:使用索引值来访问数组中的特定元素。
// 语法:arrayName[index]
int[] numbers = {10, 20, 30, 40, 50};
int value = numbers[2]; // 访问索引为2的元素,值为30
2. 修改数组元素:使用索引值来访问并修改数组中的特定元素。
int[] numbers = {10, 20, 30, 40, 50};
numbers[3] = 45; // 修改索引为3的元素,将其值改为45
注意事项:
- 索引必须是非负整数,并且小于数组的长度。
- 如果使用超出数组长度的索引进行访问或修改,将导致
ArrayIndexOutOfBoundsException
异常。 - 可以在循环中使用索引来遍历数组,并对每个元素进行访问或修改操作。
4.3 数组的长度和遍历
在Java中,数组的长度是固定的,表示数组可以容纳的元素个数。要获取数组的长度,可以使用数组的 length
属性。以下是获取数组长度和遍历数组的示例:
int[] numbers = {10, 20, 30, 40, 50};
int length = numbers.length; // 获取数组长度
System.out.println("数组长度:" + length);
// 遍历数组并打印每个元素
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}