java语法全总结2022(二)

简介: java语法全总结2022

九. 流程控制语句


if语句

if语句的格式1 :
    if(判断条件){
        语句体;
    }
执行流程:
    1. 执行判断条件, 看其返回结果是true, 还是false
    2. true : 执行 {} 中语句体
    3. false : 不执行 {} 中语句体
if语句格式2:
  if(判断条件) {
        语句体1;
    } else {
      语句体2;
    }
执行流程:
  1. 执行判断条件, 看其返回结果是true, 还是false
    2. true : 执行语句体1
    3. false : 执行语句体2
if语句的格式3:
    if(判断条件1){
        语句体1;
    }else if(判断条件2){
        语句体2;
    }else if(判断条件3){
        语句体3;
    }
    ...
    else {
        语句体n+1;
    }

switch语句

  if语句的格式1 :
        if(判断条件){
            语句体;
        }
    执行流程:
        1. 执行判断条件, 看其返回结果是true, 还是false
        2. true : 执行 {} 中语句体
        3. false : 不执行 {} 中语句体
    if语句格式2:
      if(判断条件) {
            语句体1;
        } else {
          语句体2;
        }
    执行流程:
      1. 执行判断条件, 看其返回结果是true, 还是false
        2. true : 执行语句体1
        3. false : 执行语句体2
    if语句的格式3:
        if(判断条件1){
            语句体1;
        }else if(判断条件2){
            语句体2;
        }else if(判断条件3){
            语句体3;
        }
        ...
        else {
            语句体n+1;
        }

for循环

格式:

1. for(初始化语句; 判断条件; 条件控制语句){
2.  循环体语句;
3. }

初始化语句: 定义变量

判断条件: 控制循环是否需要继续的条件

循环体语句: 循环要执行的代码

条件控制语句 : 改变控制循环的那个变量

for(int i = 1; i <= 10; i++){  // 循环几次 
  System.out.println("HelloWorld");
}

使用场景: 明确循环次数的时候,使用for循环.

无限循环

for(;;){}

while循环

格式:

初始化语句;

while(判断条件){

循环体语句;

条件控制语句;

}

int i = 1;
while(i <= 5){
    System.out.println("HelloWorld");
    i++;
}

使用场景: 不明确循环的次数, 使用while死循环.

while(true){

   循环体语句;

   条件控制语句;

}

do...while循环(了解)

格式:


初始化语句;

do {
  循环体语句;
  条件控制语句;
}while(判断条件);

特点: 无论判断条件是否满足, 都至少执行一次循环体

break&continue跳转控制语句


break: 结束\终止

   switch语句和循环语句,终止当前循环语句;

 

   注意: break只能在switch和循环中进行使用;


continue: 跳过

   跳过某一次循环体的执行, 继续下一次;

 

   注意: continue只能在循环中使用;

 

------------------------------------------------------------


共同的注意事项:


break, continue, 下面不允许写代码, 因为执行不到;


使用细节:


如果在一个循环嵌套的代码中, break和continue, 只能操作自己所在的那一层


想要操作指定层, 可以使用标号(给循环起名字)

十. 数组


两种初始化:

动态初始化: 手动指定长度, 系统分配默认初始化值.    

   int[] arr = new int[长度];


静态初始化: 手动指定元素, 系统会计算出该数组的长度.

int[] arr = new int[]{100,100,100,90};
  int[] arr = {100,100,100,90};


arr[索引] <== 索引代表数组元素的下角标,索引都是从0开始,每个数组的最大索引值等于arr.length-1;


注意:

只要是对数组中的元素进行操作(获取元素,修改赋值元素), 第一个想法是循环遍历数组,这样才能得到数组的每一个元素.

for(int i = 0; i < arr.length; i++){
    // arr[i] 代表数组的每一个元素
  System.out.println(arr[i]); 
}

 

两种初始化的使用选择:


1. 静态初始化:  如果要操作的数据都已经明确给出了, 推荐使用静态初始化

   需求: 计算出班级学生的总成绩  (100,100,100,90)

   int[] arr = {100,100,100,99};


2. 动态初始化:  只知道要存储几个元素, 但是不明确具体数值的情况

int[] arr = new int[5];
        for(int i = 0; i < arr.length; i++){
          arr[i] = sc.nextInt();
        }

十一. 方法


方法\函数: 一段具有独立功能的代码块, 不调用就不执行.

方法的定义:

定义格式:


public static 返回值类型 方法名(参数列表){

方法体;

return 返回值;

}


public static : 修饰符, 目前来说暂时记住

返回值类型: 跟return返回的结果有关

方法名: 自己给方法起的名字, 小驼峰命名法

参数列表: 方法运行之前所需要的材料

方法体: 方法中所维护的逻辑代码

return :

  1. 用于结束方法

        2. 用于将返回值返还给调用者

方法调用格式:


方法的调用格式:


1. 带返回值的方法:


 A: 单独调用-不推荐,因为没有拿到结果数据.  

  方法名(实参);

 B: 赋值调用-推荐, 因为灵活

           返回值类型 变量名 = 方法名(实参)

           

 C: 输出调用-偶尔用

           System.out.println(方法名(实参));



2. 不带返回值的方法(void) :


 void : 并不是一个数据类型, 只是标识此方法没有返回值的


 A: 单独调用

     方法名(实参);

示例:

public static void main(String[] args){
    // 1. getMax 为方法的调用, ()中的20,30 为方法的实参; 
    // 2. 用int类型参数接收方法返回的参数;
  int max = getMax(20,30);
    System.out.println(max);
}
// 1. 方法的定义. int: 方法返回值类型; getMax: 方法名; (int a, int b): 定义方法时使用的形参;
public static int getMax(int a, int b){
    // 2. 返回int类型参数;
  return a > b ? a : b;
}

方法注意事项:

1. 方法不调用就不执行

 

2. 方法与方法之间是平级关系, 不允许嵌套定义

 

3. 方法的编写顺序和执行顺序无关, 要想梳理执行顺序, 就看调用顺序

 

4. 如果一个方法的返回值类型为void, 表示此方法是没有返回值, return 语句可以省略不写的

       但如果非要写return的话, 只能写成 return;  后面不能带有具体的值.

       正确: return;

       错误: return 10;


5. return 语句下面不能写代码, 因为执行不到

 

6. 如果一个方法有明确的返回值类型, 一定要通过 return 语句带回一个结果, 无论什么情况下.

方法的重载:

介绍: 方法重载(Overload) : 方法与方法之间的一种关系

  - 在同一个类中, 方法名相同, 参数不同, 与返回值无关

    (个数不同, 类型不同, 顺序不同)

十二. 面向对象


类和对象的关系:

类 : 是一组相关属性和行为的集合, 将类理解为是对象的设计图

     既然类是对象的设计图, 那就是说, 需要根据类, 才能创建出对象

     

   关系 : 依赖关系

         需要根据类去创建对象

          数量关系

         一对多的关系, 根据一个类, 可以创建出多个对象.


标准 JavaBean:


   1. 所有成员变量私有化

 

   2. 提供出[空参][带参]构造方法

 

   3. 针对于私有的成员变量, 提供出setXxx\getXxx方法

例如:

// 1. 定义一个Student类
public class Student {
    // 2. 成员变量私有化
    private String name;
  // 2. 成员变量私有化
    private int age;
  // 2. 成员变量私有化
    private String teacherName;
  // 3. 提供空参构造方法
    public Student() {
    }
  // 4. 提供带参构造方法
    public Student(String name, int age, String teacherName) {
        this.name = name;
        this.age = age;
        this.teacherName = teacherName;
    }
    // 5. 针对于私有的成员变量, 提供出getXxx方法
    public String getName() {
        return name;
    }
  // 5. 针对于私有的成员变量, 提供出SetXxx方法
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getTeacherName() {
        return teacherName;
    }
    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

十三. String与StringBuilder


String介绍

特点:

1. Java 中所有的双引号字符串, 都是String这个类的对象


2. String 一旦被创建就不可改变 - 内容不可改变

 

  - String是一个不可改变的字符序列

  String s = "abc";

  s = "def";  // 这一步是让s变量, 记录了新的对象, 原来的 "abc" 内容是根本没有改变的

 

3. 字符串虽然不可改变, 但是其内容可以被共享


  - 字符串常量池 :

 

    在使用双引号创建字符串对象时, 会检查该数据在常量池中是否存在

      不存在 : 创建

      存在 : 复用

创建方式:

1. public String() : 创建一个空白的字符串对象
  String s = new String();
2. public String(String s) : 根据传入的字符串, 创建字符串对象
  String s = new String("abc");
3. public String(char[] chs) : 根据传入的字符数组, 创建字符串对象
  char[] chs = {'a','b','c'};
  String s = new String(chs);
1. String s = "abc";

两种创建字符串对象的区别 :

1. 双引号直接创建: 数据会在字符串常量池中进行维护

2. 通过构造方法 new 出来的对象: 会在堆内存中有自己独立的内存空间

String常见方法

String类中用于比较的方法:
public boolean equals(Object anObject) : 
  两个字符串之间做比较, 比较内容, 返回true, false的结果
public boolean equalsIgnoreCase(String anotherString)  : 
  两个字符串之间做比较, 比较内容, 返回true, false的结果, 忽略大小写
String类中用于遍历的方法:
public char[] toCharArray() : 将字符串转换为字符数组
public char charAt(int index) : 根据传入的索引获取字符
public int length() : 返回字符串中字符的个数
String类中用于截取的方法: 
public String substring(int beginIndex) : 
  根据传入的索引截取当前字符串, 截取到末尾, 并返回新的字符串
public String substring(int beginIndex, int endIndex) : 
  根据传入的开始和结束索引, 截取字符串, 并返回新的字符串
    - 包含头, 不包含尾
String类中用于替换的方法:
public String replace(CharSequence target, CharSequence replacement) :
  参数1 target :  旧值
  参数2 replacement : 新值
String类中用于切割的方法 :
public String[] split(String regex) : 
根据传入的字符串参数, 作为规则, 切割当前字符串.
正则表达式 : 本质就是一个字符串 ---> 可以去指定一些规则.
结论: 今后在做切割的时候, 希望都能以 \\ 为开头

StringBuilder介绍


- 字符串的缓冲区(容器), 容器可以存储任意数据类型, 但是数据进入到该容器, 都会变成字符串

- 可变的字符序列


- String 和 StringBuilder 区别

- String不可改变的字符序列

- StringBuilder可以改变的字符序列

思考:

如何将一个基本数据类型变成字符串类型?  

StringBuilder常用方法

public StringBuilder append(任意类型);
    往StringBuilder容器添加任意类型的数据,返回StringBuilder本身。
public StringBuilder reverse();
    对StringBuilder进行反转
public int length();
    获取StringBuiler容器中字符的个数
public String toString();
  把StringBuilder容器转换为字符串

StringBuilder和String之间的相互转换

String ---> StringBuilder 的转换
            1. 通过StringBuilder的构造方法进行转换
                        String s = "abc";
                        StringBuilder sb = new StringBuilder(s);
            2. 先创建StringBuilder对象, 再通过append方法进行转换.
                        String s = "abc";
                        StringBuilder sb = new StringBuilder();
                        sb.append(s);
StringBuilder ---> String 的转换
            1. 直接通过toString方法即可
                        StringBuilder sb = new StringBuilder("abc");
                        String s = sb.toString();


相关文章
|
2月前
|
Java 程序员
深入理解Java匿名内部类的语法和使用场景
深入理解Java匿名内部类的语法和使用场景
|
3天前
|
Java 数据安全/隐私保护
java之基本语法
java之基本语法
15 6
|
21天前
|
存储 Java 容器
Java 基础语法
Java是一种面向对象的编程语言,其基础语法包括类和对象、方法、变量、控制流语句、继承和多态以及异常处理。代码需写在类中,`main()`方法是程序入口,变量用于存储数据,控制流语句控制程序执行流程,继承和多态增强代码灵活性,异常处理保证程序稳定性。掌握这些知识可帮助您编写简单的Java程序。
|
1月前
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
19 1
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
|
1月前
|
存储 前端开发 JavaScript
【前端学JAVA】有手就会!10min快速入门java的基础语法(2)
【8月更文挑战第8天】10min快速入门java的基础语法
33 2
【前端学JAVA】有手就会!10min快速入门java的基础语法(2)
|
25天前
|
安全 前端开发 Java
浅析JVM invokedynamic指令与Java Lambda语法的深度融合
在Java的演进历程中,Lambda表达式无疑是Java 8引入的一项革命性特性,它极大地简化了函数式编程在Java中的应用,使得代码更加简洁、易于阅读和维护。而这一切的背后,JVM的invokedynamic指令功不可没。本文将深入探讨invokedynamic指令的工作原理及其与Java Lambda语法的紧密联系,带您领略这一技术背后的奥秘。
18 1
|
29天前
|
小程序 Java
【aspose-words】Aspose.Words for Java模板语法详细剖析
本文通过详细分析Aspose.Words for Java模板语法,介绍了使用条件块、变量和动态合并表格单元格三个常用模板标签,并结合实际案例进行演示。通过这三个标签的实操,帮助读者更好地掌握Aspose.Words的使用技巧。此外,还提供了官方文档链接以便进一步学习。
84 0
【aspose-words】Aspose.Words for Java模板语法详细剖析
|
1月前
|
安全 Java 编译器
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
48 18
|
1月前
|
Java
Java 基础语法-面试题(54-63道)(数组+类+包)
Java 基础语法-面试题(54-63道)(数组+类+包)
36 16
|
1月前
|
存储 Java 编译器
Java 基础语法-方法
Java 基础语法-方法
35 12