(已整理到博文)Java 基础语法(2)

等学得有点东西的时候再整理发个博文

一、流程控制结构

1. 分支结构

  • if 语句
    • if (条件) { 语句; } else if( 条件 ) { 语句; } else { 语句; }
  • switch 语句
    • switch (变量) { case "": 语句; break; case "" : case "" : case "" : …… 语句; break; default: 语句; }

2. 循环结构

  • for 循环
    • for( 初始化语句 ; 循环条件 ; 迭代语句 ) { 语句; }
    • for( 元素类型 循环变量名:数组名 ) { 语句; }
  • while 循环:先 while 后 do
    • 初始化语句; while ( 循环条件 ) { 循环体语句; 迭代语句; }
  • do-while 循环:先 do 后 while
    • 初始化语句; do { 循环体语句; 迭代语句 } while ( 循环条件 );

3. 跳转关键字

  • break :跳出并结束当前所在循环的执行
  • continue :跳出当前循环的当次执行

二、数组

所谓的数组其实是存在一连串连续空间的数据,数组名指向该一连串空间的首空间的地址。

  1. 创建数组
  • 数据类型[] 数组名 = new 数据类型[] {元素1,元素2,…… };
  • 数据类型 数组名[] = {元素1,元素2,…… };
  1. 数组的长度
  • 数组名.length

3.动态初始化数组

  • 数据类型[] 数组名 = new 数据类型[长度];

三、方法

方法是一种语法结构,可以把一段代码封装成一个功能,以便调用。

1.格式

修饰符 返回值类型 方法名 { 形参列表 } { 
    方法体代码; 
    return 返回值; 
}
  1. 调用
  • 方法名称( 实参列表 );
  • 变量 = 方法名称( 实参列表 );
  1. 参数的传递
  • 基本数据类型:传递实参,但不会改变调用前所在函数的数据。
  • 引用类型:使用地址传参,会改变地址所在的数据。
  1. 方法重载
    一个类中,出现多个方法名称相同但形参列表不同。

四、对象

通俗的讲,对象是一个放了数据和操作方法的容器。

首先,需要设计对象,如:

public class Student {
  //对象的属性,一般来说有默认值(null或0)
  String name;
  int age;
  ...
 
  //对象的方法,处理所需要的信息并返回
  public void putImformation() {
    ...
  }

  //可以同时有多个方法
  public void getScore() {
    ...
  }
}

然后,在需要调用时,可像这样操作:

//创建对象实例,并输入实例信息
Student st1 = new Student();
st1.name = "...";
st1.age = ...;
...
//调用对象里存在的方法
st1.putImformation();
...

同时,也可以通过直接赋值,从而引用对象实例,并可从中作出修改(即将对象的地址直接传给了另一个实例)

//创建实例1
Student st1 = new Student();
st1.name = "...";
st1.age = ...;
...

//创建实例2,直接赋值
Student st2 = st1;

//从中可做出修改,此时会影响 st1
st2.name = "...";
...

注意事项:

  • 当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”,Java 虚拟机的垃圾回收机制会自动清除掉垃圾对象

五、this 关键字

如单词所表达,this 关键字用来指当前的对象。

什么是 this 关键字?

  • this 就是一个变量,可以用在方法中,来拿到当前对象。
  • 哪个对象调用方法,this 就指向哪个对象。

this 关键字有什么用?

  • 用来解决变量名称冲突问题,例如:
public class Stduent {
  double score;  //这是对象里的变量
  
  public void compare(double score) {  //这是对象里的方法所接收数据用的变量名
    
    //错误使用示例
    if(score > score) {语句;}  //此时两个score都指的是最近的变量名。即方法所使用的变量名

    //正确使用示例
    if(this.score > score) {语句;}  //此时前者访问对象里的变量名,后者访问方法所使用的变量名
  }
}

六、构造器与封装

什么?原来对象里可以放多个和对象重名的方法?

什么是构造器?

  • 与类名相同的方法,例如:
public class Student {
  
  //构造器
  public Student() {
    ...
  }
}

特点是什么?

  • 不能写返回值。
  • 与类名同名。
  • 打开对象时,会调用构造器,例如:
//对象
public class Student {

  public Student() {
    System.out.println("无参数构造器被执行了。");
    }

  public Student(int N) {
    System.out.println("有参数构造器被执行了,参数为" + N);
    }
    
  public Student(String name, int N) {
    System.out.println("多参数构造器被执行了。");
    this.name = name;
    this.age = N;
  }
}
//调用对象的程序
public class Test {
    
  public static void main(String[] args) {
        
    //调用无参数构造器
    Student st1 = new Student();
    
    //调用有参数对象构造器
    Student st2 = new Student(10);
    }

    //调用多参数对象构造器
    Student st3 = new Student("李华", 10);
    System.out.println(st3.name + st3.age);
        
}

则输出结果为:

注意事项:

  • 如果不写构造器,Java会为类自动生成一个无参构造器。
  • 若已定义有参数构造器,则Java不自动生成无参构造器,此时应自己手写一个无参数构造器。

什么是封装?

  • 将要处理的数据及方法设计到一个对象中。

封装的特点

  • 合理隐藏,合理暴露:根据实际需要,将变量或方法利用 public 或 private 来对外公开或隐藏,防止外部程序过度访问对象内容。

七、实体类

这又是啥呀(疑惑)

什么是实体类?

  • 是一种特殊形式的类,仅用于保存数据。
  • 必须要有一个公共的无参构造器。
  • 成员变量都要 private ,并且要对外提供相应的getXxx,setXxx方法。(一般没有其它方法)
posted @ 2024-03-18 21:36  SmallGoldMedal  阅读(7)  评论(0编辑  收藏  举报