1.for...each
通常用于遍历数组和集合
for(元素类型元素:数组或集合)
EG:String[] strs={"沉默"}
for(String str:strs)
2.输入
Scanner scanner=new Scanner(System.in);
scanner.nextLine();//输入字符串
3.数组的初始化
int[] array=new int[]{0,1,2,3,4,5};
int[] array=new int[5];
int[] array={0,1,2,3,4,5};
4.打印数组
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < 5; i++){
System.out.println(array[i]);
}
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
重点
int[] array = {1, 2, 3};
for (int x : array) {//左边写数组的类型+定义的变量
System.out.println(x);
}
import java.util.Arrays;
System.out.println(Arrays.toString(array));
5.类
类的书写方式是大驼峰
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为或者成员方法
}
类的实例化
public class Main{
public static void main(String[] args) {
PetDog dogh = new PetDog(); //通过new实例化对象
dogh.name = "阿黄";
dogh.color = "黑黄";
dogh.barks();
dogh.wag();
PetDog dogs = new PetDog();
dogs.name = "阿黄";
dogs.color = "黑黄";
dogs.barks();
dogs.wag();
}
}
构造方法:
public class Date {
public int year;
public int month;
public int day;
// 构造方法:
// 名字与类名相同,没有返回值类型,设置为void也不行
// 一般情况下使用public修饰
// 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
public Date(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
System.out.println("Date(int,int,int)方法被调用了");
}
public void printDate(){
System.out.println(year + "-" + month + "-" + day);
}
public static void main(String[] args) {
// 此处创建了一个Date类型的对象,并没有显式调用构造方法
Date d = new Date(2021,6,9); // 输出Date(int,int,int)方法被调用了
d.printDate(); // 2021-6-9
}
}
//构造方法没有返回值,方法名与类名一致
//构造方法如果一个都没写的情况下,则会生成一个不带参数的构造方法
//一旦生成一个任意构造方法,则不会自动生成
//没有返回值类型,设置为void也不行.
//创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次).
//构造方法可以重载(用户根据自己的需求提供不同参数的构造方法).
6.对象的打印
重写toString即可
7.面向对象程序三大特性:封装、继承、多态。
8.继承
猫和狗之间存在共性,所以需要用父类
子类:public class Dog extends Animal
子类和父类同名,优先子类
若想使用父类,super.A
子类构造方法:先父后子
class Person{
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Student extends Person {
String sex;
public Student(String name, int age, String sex) {
super(name, age);
this.sex = sex;
}
}
9.多态
(1)必须在继承体系下
(2)子类必须对父类方法进行重写
(3)通过父类的引用调用重写的方法
10.重写
重写时,子类的访问权限要大于等于父类的访问权限。
11.静态绑定/前期绑定
根据用户所传递的实参类型就确定了具体的调用方法
12.动态绑定
在编译时,不能确定方法的行为,需要等到程序运行时,才能确定具体调用哪个类的方法。
13.向上转型
实际就是传递一个子类对象,将其当成父类对象来使用。
父类对象 对象名=new 子类对象();
Animal animal=new Cat()//Animal是一个父类类型,但可以引用一个子类对象
14.字符串
(1)对象的比较
==
内置类型:比较的是变量中的值
引用类型:比较的是引用中的地址
sout(s1.equals(s2));
sout(s1.compareTo(s2));
sout(s1.compareToIgnoreCase);//忽略大小比较