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 和 char 8种
- 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); // -1294967296
复制代码res1: 由于超出了int可存储的范围,溢出;
res2: 尽管隐式转换前已经溢出
res2: a被强转成long,此时再与b相加,b会隐式自动转为long,就不会溢出
res4: 同res2,再加法完成后已经溢出,再隐式转换还是强制转换都不管用了
三、基本语法
运算、循环、分支同大多数语言
四、字符串
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 会误解包含引号的字符串,并产生错误:反斜杠 (\) 转义字符将特殊字符转换为字符串字符:
转义字符结果''""\\\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();
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |