1.java基本语法
JAVA基本语法
〇、HelloWorld
1. 输出HelloWorld
-
创建.java结尾的文件
-
每个文件由类构成
-
类中有一个main方法,代表程序的入口
public class Main { public static void main(String[] args) { System.out.println("Hello World"); } }
2. 基本概念和运行原理
JDK:开发Java应用的工具包
-
JDK => 包含编译工具JAVAC、运行环境JRE、其他工具
-
JAVAC => 将.java文件编译成字节码文件.class
-
JRE => JRE中的JVM会将字节码文件转换为不同设备上的机器码运行 => 可以跨平台运行的原因

一、数据类型
1. 基本数据类型
-
包括
byte、short、int、long、float、double、boolean和char8种int myNum = 5; // 整数 float myFloatNum = 5.99f; // 浮点数 char myLetter = 'D'; // 字符 boolean myBool = true; // 布尔值数据类型 大小 描述 byte1 字节 存储从 -128 到 127 的整数。 short2 字节 存储从 -32,768 到 32,767 的整数。 int4 字节 存储从 -2,147,483,648 到 2,147,483,647 的整数。 long8 字节 存储从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的整数。 float4 字节 存储小数。足以存储 6 到 7 位十进制数字。 double8 字节 存储小数。足以存储 15 位十进制数字。 boolean不确定 存储 true 值或 false 值。 char2 字节 存储单个字符/字母或 ASCII 值
2. 引用数据类型
- 包括字符串、数组、类等
3. 包装类型
包装类型是 Java 中的一种特殊类型,用于将基本数据类型转换为对应的对象类型。
-
包装类型提供了许多实用的方法
// 3. 包装类型 Integer integerValue1 = new Integer(11); Integer integerValue2 = Integer.valueOf(22); Integer integerValue3 = 33; System.out.println("integerValue1 = " + integerValue1); System.out.println("integerValue2 = " + integerValue2); System.out.println("integerValue3 = " + integerValue3); // 将字符串转换为整数 String numberString = "123"; int parsedNumber = Integer.parseInt(numberString); System.out.println("parsedNumber = " + parsedNumber); // 数字比较 Integer a = 10; Integer b = 20; System.out.println(a.equals(b)); // 输出 false -
对应基本数据类型的8种包装类型:
- Byte(对应 byte)
- Short(对应 short)
- Integer(对应 int)
- Long(对应 long)
- Float(对应 float)
- Double(对应 double)
- Character(对应 char)
- Boolean(对应 boolean)
4. 类型转换
-
放大转换(自动) - 将较小的类型转换为较大的类型
byte->short->char->int->long->float->double// 4. 类型转换 // 4.1自动转换,小类型到大类型 int myInt = 3; float myFloat1 = myInt; // 自动转为 float char myChar = 'A'; myInt = myChar; float myFloat2 = myChar; System.out.println("myFloat = " + myFloat1); // 输出 3.0,float类型 System.out.println("myInt = " + myInt); System.out.println("myFloat2 = " + myFloat2); float myFloat3 = 1.5f; double myDouble = 1.2; int num1 = 1; int num2 = 2; double res = myFloat3 * num1 + myDouble * num2; System.out.println(res); // double类型 -
缩小转换(手动) - 将较大的类型转换为较小的类型
double->float->long->int->char->short->byte// 3.2手动转换,大类型到小类型 int myInt2 = 50; float myFloat4 = 2.1f; char myChar2 = (char) myInt2; // myInt2 = (int) myInt * myFloat4; -> 错误写法,只是强转了后面的当个变量或表达式 myInt2 = (int) (myInt2 * myFloat4); System.out.println("myChar2 = " + myChar2); // 输出2(2对应的ACSII码为) System.out.println("myInt2 = " + myInt2); // 输出 9 -
踩坑点
int a = 1500000000, b = 1500000000; int res1 = a + b; // -1294967296 long res2 = a + b; // -1294967296 long res3 = (long)a + b; // 3000000000 long res4 = (long)(a + b); // -1294967296res1: 由于超出了int可存储的范围,溢出;
res2: 尽管隐式转换前已经溢出
res2: a被强转成long,此时再与b相加,b会隐式自动转为long,就不会溢出
res4: 同res2,再加法完成后已经溢出,再隐式转换还是强制转换都不管用了
三、基本语法
运算、循环、分支同大多数语言
四、字符串
String S = "Hello";
Java 中的字符串实际上是对象,拥有可对字符串执行操作的方法。例如,可以用
length()方法确定字符串的长度:
1. 字符串方法
System.out.println("===== 获取字符串信息 =====");
// 1. length(): 获取字符串长度
String str = "Hello, Java!";
int length = str.length();
System.out.println("字符串长度: " + length); // 输出: 12
// 2. charAt(int index): 获取指定索引处的字符
char ch = str.charAt(7);
System.out.println("索引 7 处的字符: " + ch); // 输出: J
// 3. indexOf(String str) 和 lastIndexOf(String str): 查找子字符串的位置
int firstIndex = str.indexOf("Java");
int lastIndex = str.lastIndexOf("Java");
System.out.println("第一次出现 'Java' 的位置: " + firstIndex); // 输出: 7
System.out.println("最后一次出现 'Java' 的位置: " + lastIndex); // 输出: 7
// ======================== 字符串比较 ========================
System.out.println("\n===== 字符串比较 =====");
// 4. equals() 和 equalsIgnoreCase(): 比较字符串内容
String str1 = "Java";
String str2 = "java";
boolean isEqual = str1.equals(str2);
boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2);
System.out.println("区分大小写比较: " + isEqual); // 输出: false
System.out.println("忽略大小写比较: " + isEqualIgnoreCase); // 输出: true
// ======================== 字符串修改 ========================
System.out.println("\n===== 字符串修改 =====");
// 6. toLowerCase() 和 toUpperCase(): 大小写转换
String mixedCase = "Hello, World!";
String lowerCase = mixedCase.toLowerCase();
String upperCase = mixedCase.toUpperCase();
System.out.println("小写: " + lowerCase); // 输出: hello, world!
System.out.println("大写: " + upperCase); // 输出: HELLO, WORLD!
// 7. trim(): 去除首尾空白字符
String withSpaces = " Hello, Java! ";
String trimmed = withSpaces.trim();
System.out.println("去除空格后: '" + trimmed + "'"); // 输出: 'Hello, Java!'
// 8. replace(char oldChar, char newChar) 和 replace(CharSequence target, CharSequence replacement): 替换字符或子字符串
String original = "Hello, Java!";
String replacedChar = original.replace('J', 'L');
String replacedString = original.replace("Java", "Python");
System.out.println("替换字符: " + replacedChar); // 输出: Hello, Lava!
System.out.println("替换子字符串: " + replacedString); // 输出: Hello, Python!
// ======================== 字符串分割与拼接 ========================
System.out.println("\n===== 字符串分割与拼接 =====");
// 9. split(String regex): 按正则表达式分割字符串
String fruits = "apple,banana,cherry";
String[] parts = fruits.split(",");
System.out.print("分割后的字符串数组: ");
for (String part : parts) {
System.out.print(part + " "); // 输出: apple banana cherry
}
System.out.println();
// 10. join(CharSequence delimiter, CharSequence... elements): 拼接字符串
String joined = String.join("-", "2023", "10", "05");
System.out.println("拼接后的字符串: " + joined); // 输出: 2023-10-05
// ======================== 字符串判断 ========================
System.out.println("\n===== 字符串判断 =====");
// 11. startsWith(String prefix) 和 endsWith(String suffix): 判断字符串是否以指定前缀或后缀开头/结尾
String sentence = "Hello, Java!";
boolean startsWithHello = sentence.startsWith("Hello");
boolean endsWithJava = sentence.endsWith("Java!");
System.out.println("以 'Hello' 开头: " + startsWithHello); // 输出: true
System.out.println("以 'Java!' 结尾: " + endsWithJava); // 输出: true
// 12. isEmpty() 判断字符串是否为空或空白
String emptyString = "";
boolean isEmpty = emptyString.isEmpty();
System.out.println("是否为空字符串: " + isEmpty); // 输出: true
// ======================== 字符串提取 ========================
System.out.println("\n===== 字符串提取 =====");
// 13. substring(int beginIndex, int endIndex): 提取子字符串
String text = "Hello, Java!";
String subText = text.substring(7, 11);
System.out.println("提取的子字符串: " + subText); // 输出: Java
2. 字符串拼接
String firstName = "Bi";
String lastName = "ouwai";
System.out.println(firstName + lastName);
System.out.println(firstName.concat(lastName));
// 与数字拼接
int x = 10;
int y = 20;
int z = x + y; // z 将是 30(整数/数字)
String x = "10";
String y = "20";
String z = x + y; // z 将是 1020(字符串)
3. 特殊字符
因为字符串必须写在引号内,Java 会误解包含引号的字符串,并产生错误:
String txt = "abc"d"e.";
反斜杠 (\) 转义字符将特殊字符转换为字符串字符:
| 转义字符 | 结果 |
|---|---|
| ' | ' |
| " | " |
| \ | \ |
| \n | 新行 |
| \r | 回车 |
| \t | 制表符 |
| \b | 退格 |
五、数组
存储固定大小的相同类型元素 的数据结构
1. 基本特点
- 固定大小 :一旦创建,数组的大小不能改变。
- 同类型元素 :数组中的所有元素必须是相同的类型。
- 连续内存 :数组在内存中是连续存储的,因此可以通过索引快速访问元素。
- 零基索引 :数组的第一个元素的索引是
0,最后一个元素的索引是length - 1,访问数组时超出索引会报错。
2. 声明与初始化
// 数组基本概念
// 1. 声明并静态初始化一个数组
int[] numbers = {10, 20, 30, 40, 50};
System.out.println("初始化的数组:");
printArray(numbers);
// 2. 访问数组元素
System.out.println("\n访问数组元素:");
System.out.println("numbers[0]: " + numbers[0]); // 输出第一个元素
System.out.println("numbers[2]: " + numbers[2]); // 输出第三个元素
// 3. 修改数组元素
numbers[1] = 25; // 修改第二个元素
System.out.println("\n修改后的数组:");
printArray(numbers);
// 4. 获取数组长度
System.out.println("\n数组的长度: " + numbers.length);
// 5. 遍历数组
System.out.println("\n遍历数组:");
for (int i = 0; i < numbers.length; i++) {
System.out.println("Element at index " + i + ": " + numbers[i]);
}
// 6. 使用增强型for循环遍历数组
System.out.println("\n使用增强型for循环遍历数组:");
for (int num : numbers) {
System.out.println(num);
}
// 7. 多维数组的静态初始化
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println("\n二维数组matrix:");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
// 打印一维数组的方法
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
3. 数组常用方法
// 数组常用方法
// 1. 排序数组 (Arrays.sort)
Arrays.sort(numbers); // 对数组进行升序排序
System.out.println("\n排序后的数组:");
printArray(numbers);
// 2. 复制数组 (Arrays.copyOf)
int[] copiedArray = Arrays.copyOf(numbers, numbers.length);
System.out.println("\n复制后的数组:");
printArray(copiedArray);
// 3. 填充数组 (Arrays.fill)
Arrays.fill(copiedArray, 10); // 将数组的所有元素设置为10
System.out.println("\n填充后的数组:");
printArray(copiedArray);
// 4. 查找元素 (Arrays.binarySearch)
// 注意:使用binarySearch前需要确保数组已排序
int searchKey = 3;
int index = Arrays.binarySearch(numbers, searchKey);
if (index >= 0) {
System.out.println("\n元素 " + searchKey + " 在数组中的索引位置是: " + index);
} else {
System.out.println("\n元素 " + searchKey + " 不在数组中");
}
// 5. 比较数组 (Arrays.equals)
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
boolean isEqual = Arrays.equals(array1, array2); // 比较两个数组是否相等
System.out.println("\narray1 和 array2 是否相等: " + isEqual);
// 6 转换数组为字符串 (Arrays.toString)
System.out.println("\n将数组转换为字符串:");
System.out.println(Arrays.toString(numbers));
// 7. 多维数组的操作 (Arrays.deepToString)
System.out.println("\n二维数组matrix:");
System.out.println(Arrays.toString(matrix));
System.out.println(Arrays.deepToString(matrix)); // 使用deepToString打印多维数组
// 打印一维数组的方法
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}

浙公网安备 33010602011771号