找回密码
 立即注册
首页 业界区 安全 1.java基本语法

1.java基本语法

每捎京 2 小时前
JAVA基本语法

〇、HelloWorld

1. 输出HelloWorld


  • 创建.java结尾的文件
  • 每个文件由类构成
  • 类中有一个main方法,代表程序的入口
    1. public class Main {
    2.   public static void main(String[] args) {
    3.     System.out.println("Hello World");
    4.   }
    5. }
    复制代码
2. 基本概念和运行原理

JDK:开发Java应用的工具包


  • JDK => 包含编译工具JAVAC、运行环境JRE、其他工具
  • JAVAC => 将.java文件编译成字节码文件.class
  • JRE => JRE中的JVM会将字节码文件转换为不同设备上的机器码运行 => 可以跨平台运行的原因
    1.png

一、数据类型

1. 基本数据类型


  • 包括 byte、short、int、long、float、double、boolean 和 char 8种
    1. int myNum = 5;               // 整数
    2. float myFloatNum = 5.99f;    // 浮点数
    3. char myLetter = 'D';         // 字符
    4. 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 中的一种特殊类型,用于将基本数据类型转换为对应的对象类型。


  • 包装类型提供了许多实用的方法
    1. // 3. 包装类型
    2. Integer integerValue1 = new Integer(11);
    3. Integer integerValue2 = Integer.valueOf(22);
    4. Integer integerValue3 = 33;
    5. System.out.println("integerValue1 = " + integerValue1);
    6. System.out.println("integerValue2 = " + integerValue2);
    7. System.out.println("integerValue3 = " + integerValue3);
    8. // 将字符串转换为整数
    9. String numberString = "123";
    10. int parsedNumber = Integer.parseInt(numberString);
    11. System.out.println("parsedNumber = " + parsedNumber);
    12. // 数字比较
    13. Integer a = 10;
    14. Integer b = 20;
    15. 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
    1. // 4. 类型转换
    2. // 4.1自动转换,小类型到大类型
    3. int myInt = 3;
    4. float myFloat1 = myInt;         // 自动转为 float
    5. char myChar = 'A';
    6. myInt = myChar;
    7. float myFloat2 = myChar;
    8. System.out.println("myFloat = " + myFloat1);    // 输出 3.0,float类型
    9. System.out.println("myInt = " + myInt);
    10. System.out.println("myFloat2 = " + myFloat2);
    11. float myFloat3 = 1.5f;
    12. double myDouble = 1.2;
    13. int num1 = 1;
    14. int num2 = 2;
    15. double res = myFloat3 * num1 + myDouble * num2;
    16. System.out.println(res); // double类型
    复制代码
  • 缩小转换(手动) - 将较大的类型转换为较小的类型
    double -> float -> long -> int -> char -> short -> byte
    1. // 3.2手动转换,大类型到小类型
    2. int myInt2 = 50;
    3. float myFloat4 = 2.1f;
    4. char myChar2 = (char) myInt2;
    5. // myInt2 = (int) myInt * myFloat4;  -> 错误写法,只是强转了后面的当个变量或表达式
    6. myInt2 = (int) (myInt2 * myFloat4);
    7. System.out.println("myChar2 = " + myChar2);                // 输出2(2对应的ACSII码为)
    8. System.out.println("myInt2 = " + myInt2);      // 输出 9
    复制代码
  • 踩坑点
    1. int a = 1500000000, b = 1500000000;
    2. int res1 = a + b;  // -1294967296
    3. long res2 = a + b;        // -1294967296
    4. long res3 = (long)a + b;        // 3000000000
    5. long res4 = (long)(a + b);        // -1294967296
    复制代码
    res1: 由于超出了int可存储的范围,溢出;
    res2: 尽管隐式转换前已经溢出
    res2: a被强转成long,此时再与b相加,b会隐式自动转为long,就不会溢出
    res4: 同res2,再加法完成后已经溢出,再隐式转换还是强制转换都不管用了

三、基本语法

运算、循环、分支同大多数语言
四、字符串
  1. String S = "Hello";
复制代码
Java 中的字符串实际上是对象,拥有可对字符串执行操作的方法。例如,可以用 length() 方法确定字符串的长度:
1. 字符串方法
  1. System.out.println("===== 获取字符串信息 =====");
  2. // 1. length(): 获取字符串长度
  3. String str = "Hello, Java!";
  4. int length = str.length();
  5. System.out.println("字符串长度: " + length); // 输出: 12
  6. // 2. charAt(int index): 获取指定索引处的字符
  7. char ch = str.charAt(7);
  8. System.out.println("索引 7 处的字符: " + ch); // 输出: J
  9. // 3. indexOf(String str) 和 lastIndexOf(String str): 查找子字符串的位置
  10. int firstIndex = str.indexOf("Java");
  11. int lastIndex = str.lastIndexOf("Java");
  12. System.out.println("第一次出现 'Java' 的位置: " + firstIndex); // 输出: 7
  13. System.out.println("最后一次出现 'Java' 的位置: " + lastIndex); // 输出: 7
  14. // ======================== 字符串比较 ========================
  15. System.out.println("\n===== 字符串比较 =====");
  16. // 4. equals() 和 equalsIgnoreCase(): 比较字符串内容
  17. String str1 = "Java";
  18. String str2 = "java";
  19. boolean isEqual = str1.equals(str2);
  20. boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2);
  21. System.out.println("区分大小写比较: " + isEqual);           // 输出: false
  22. System.out.println("忽略大小写比较: " + isEqualIgnoreCase); // 输出: true
  23. // ======================== 字符串修改 ========================
  24. System.out.println("\n===== 字符串修改 =====");
  25. // 6. toLowerCase() 和 toUpperCase(): 大小写转换
  26. String mixedCase = "Hello, World!";
  27. String lowerCase = mixedCase.toLowerCase();
  28. String upperCase = mixedCase.toUpperCase();
  29. System.out.println("小写: " + lowerCase); // 输出: hello, world!
  30. System.out.println("大写: " + upperCase); // 输出: HELLO, WORLD!
  31. // 7. trim(): 去除首尾空白字符
  32. String withSpaces = "   Hello, Java!   ";
  33. String trimmed = withSpaces.trim();
  34. System.out.println("去除空格后: '" + trimmed + "'"); // 输出: 'Hello, Java!'
  35. // 8. replace(char oldChar, char newChar) 和 replace(CharSequence target, CharSequence replacement): 替换字符或子字符串
  36. String original = "Hello, Java!";
  37. String replacedChar = original.replace('J', 'L');
  38. String replacedString = original.replace("Java", "Python");
  39. System.out.println("替换字符: " + replacedChar);         // 输出: Hello, Lava!
  40. System.out.println("替换子字符串: " + replacedString);   // 输出: Hello, Python!
  41. // ======================== 字符串分割与拼接 ========================
  42. System.out.println("\n===== 字符串分割与拼接 =====");
  43. // 9. split(String regex): 按正则表达式分割字符串
  44. String fruits = "apple,banana,cherry";
  45. String[] parts = fruits.split(",");
  46. System.out.print("分割后的字符串数组: ");
  47. for (String part : parts) {
  48.     System.out.print(part + " "); // 输出: apple banana cherry
  49. }
  50. System.out.println();
  51. // 10. join(CharSequence delimiter, CharSequence... elements): 拼接字符串
  52. String joined = String.join("-", "2023", "10", "05");
  53. System.out.println("拼接后的字符串: " + joined); // 输出: 2023-10-05
  54. // ======================== 字符串判断 ========================
  55. System.out.println("\n===== 字符串判断 =====");
  56. // 11. startsWith(String prefix) 和 endsWith(String suffix): 判断字符串是否以指定前缀或后缀开头/结尾
  57. String sentence = "Hello, Java!";
  58. boolean startsWithHello = sentence.startsWith("Hello");
  59. boolean endsWithJava = sentence.endsWith("Java!");
  60. System.out.println("以 'Hello' 开头: " + startsWithHello); // 输出: true
  61. System.out.println("以 'Java!' 结尾: " + endsWithJava);     // 输出: true
  62. // 12. isEmpty() 判断字符串是否为空或空白
  63. String emptyString = "";
  64. boolean isEmpty = emptyString.isEmpty();
  65. System.out.println("是否为空字符串: " + isEmpty); // 输出: true
  66. // ======================== 字符串提取 ========================
  67. System.out.println("\n===== 字符串提取 =====");
  68. // 13. substring(int beginIndex, int endIndex): 提取子字符串
  69. String text = "Hello, Java!";
  70. String subText = text.substring(7, 11);
  71. System.out.println("提取的子字符串: " + subText); // 输出: Java
复制代码
2. 字符串拼接
  1. String firstName = "Bi";
  2. String lastName = "ouwai";
  3. System.out.println(firstName + lastName);
  4. System.out.println(firstName.concat(lastName));
  5. // 与数字拼接
  6. int x = 10;
  7. int y = 20;
  8. int z = x + y;      // z 将是 30(整数/数字)
  9. String x = "10";
  10. String y = "20";
  11. String z = x + y;   // z 将是 1020(字符串)
复制代码
3. 特殊字符

因为字符串必须写在引号内,Java 会误解包含引号的字符串,并产生错误:
  1. String txt = "abc"d"e.";
复制代码
反斜杠 (\) 转义字符将特殊字符转换为字符串字符:
转义字符结果''""\\\n新行\r回车\t制表符\b退格五、数组

存储固定大小的相同类型元素 的数据结构
1. 基本特点


  • 固定大小 :一旦创建,数组的大小不能改变。
  • 同类型元素 :数组中的所有元素必须是相同的类型。
  • 连续内存 :数组在内存中是连续存储的,因此可以通过索引快速访问元素。
  • 零基索引 :数组的第一个元素的索引是0,最后一个元素的索引是length - 1,访问数组时超出索引会报错。
2. 声明与初始化
  1. // 数组基本概念
  2. // 1. 声明并静态初始化一个数组
  3. int[] numbers = {10, 20, 30, 40, 50};
  4. System.out.println("初始化的数组:");
  5. printArray(numbers);
  6. // 2. 访问数组元素
  7. System.out.println("\n访问数组元素:");
  8. System.out.println("numbers[0]: " + numbers[0]);  // 输出第一个元素
  9. System.out.println("numbers[2]: " + numbers[2]);  // 输出第三个元素
  10. // 3. 修改数组元素
  11. numbers[1] = 25;  // 修改第二个元素
  12. System.out.println("\n修改后的数组:");
  13. printArray(numbers);
  14. // 4. 获取数组长度
  15. System.out.println("\n数组的长度: " + numbers.length);
  16. // 5. 遍历数组
  17. System.out.println("\n遍历数组:");
  18. for (int i = 0; i < numbers.length; i++) {
  19.     System.out.println("Element at index " + i + ": " + numbers[i]);
  20. }
  21. // 6. 使用增强型for循环遍历数组
  22. System.out.println("\n使用增强型for循环遍历数组:");
  23. for (int num : numbers) {
  24.     System.out.println(num);
  25. }
  26. // 7. 多维数组的静态初始化
  27. int[][] matrix = {
  28.         {1, 2, 3},
  29.         {4, 5, 6},
  30.         {7, 8, 9}
  31. };
  32. System.out.println("\n二维数组matrix:");
  33. for (int i = 0; i < matrix.length; i++) {
  34.     for (int j = 0; j < matrix[i].length; j++) {
  35.         System.out.print(matrix[i][j] + " ");
  36.     }
  37.     System.out.println();
  38. }
  39. // 打印一维数组的方法
  40. public static void printArray(int[] arr) {
  41.     for (int num : arr) {
  42.         System.out.print(num + " ");
  43.     }
  44.     System.out.println();
  45. }
复制代码
3. 数组常用方法
  1. // 数组常用方法
  2. // 1. 排序数组 (Arrays.sort)
  3. Arrays.sort(numbers);  // 对数组进行升序排序
  4. System.out.println("\n排序后的数组:");
  5. printArray(numbers);
  6. // 2. 复制数组 (Arrays.copyOf)
  7. int[] copiedArray = Arrays.copyOf(numbers, numbers.length);
  8. System.out.println("\n复制后的数组:");
  9. printArray(copiedArray);
  10. // 3. 填充数组 (Arrays.fill)
  11. Arrays.fill(copiedArray, 10);  // 将数组的所有元素设置为10
  12. System.out.println("\n填充后的数组:");
  13. printArray(copiedArray);
  14. // 4. 查找元素 (Arrays.binarySearch)
  15. // 注意:使用binarySearch前需要确保数组已排序
  16. int searchKey = 3;
  17. int index = Arrays.binarySearch(numbers, searchKey);
  18. if (index >= 0) {
  19.     System.out.println("\n元素 " + searchKey + " 在数组中的索引位置是: " + index);
  20. } else {
  21.     System.out.println("\n元素 " + searchKey + " 不在数组中");
  22. }
  23. // 5. 比较数组 (Arrays.equals)
  24. int[] array1 = {1, 2, 3};
  25. int[] array2 = {1, 2, 3};
  26. boolean isEqual = Arrays.equals(array1, array2);  // 比较两个数组是否相等
  27. System.out.println("\narray1 和 array2 是否相等: " + isEqual);
  28. // 6 转换数组为字符串 (Arrays.toString)
  29. System.out.println("\n将数组转换为字符串:");
  30. System.out.println(Arrays.toString(numbers));
  31. // 7. 多维数组的操作 (Arrays.deepToString)
  32. System.out.println("\n二维数组matrix:");
  33. System.out.println(Arrays.toString(matrix));
  34. System.out.println(Arrays.deepToString(matrix));  // 使用deepToString打印多维数组
  35. // 打印一维数组的方法
  36. public static void printArray(int[] arr) {
  37.     for (int num : arr) {
  38.         System.out.print(num + " ");
  39.     }
  40.     System.out.println();
  41. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册