笔记目录
一、类和变量
1.命名规范
通常情况下,当类名由多个单词组成时,要求每个单词首字母都要大写。
当成员变量由多个单词组成时,通常要求从第二个单词起每个单词的首
字母大写 。
当成员方法名由多个单词组成时,要求从第二个单词起每个单词的首字母大写。
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.成员变量的初始值
3.形参、实参和参数传递
• 参数分为形参和实参,定义方法时的参数叫形参,调用方法时传递的参数叫实参。
• 调用方法时采用值传递把实参传递给形参,方法内部其实是在使用形参。
• 所谓值传递就是当参数是基本类型时,传递参数的值,比如传递i=10,真实传参时,把10赋值给了形参。当参数是对象时,传递的是对象的值,也就是把对象的地址赋值给形参。
参数传递的注意事项
• 基本数据类型的变量作为方法的参数传递时,形参变量数值的改变通常不会影响到实参变量的数值,因为两个变量有各自独立的内存空间;
• 引用数据类型的变量作为方法的参数传递时,形参变量指向内容的改变会影响到实参变量指向内容的数值,因为两个变量指向同一块内存空间
• 当引用数据类型的变量作为方法的参数传递时,若形参变量改变指向后再改变指定的内容,则通常不会影响到实参变量指向内容的改变,因为两个变量指向不同的内存空间。
代码(示例):
/*
编程实现参数传递的测试
*/
public class ArgumentTest {
// 自定义成员方法打印参数传入的整数数据
// int ia = ib = 10;
void show1(int ia) {
ia = 200;
System.out.println("show方法中:ia = " + ia); // 10 200
}
// 自定义成员方法打印参数传入的数组内容
void show2(int[] arr1) {
arr1 = new int[2]; // 加上改行代码后,相当于在堆区中又重新申请一块内存空间
arr1[0] = 200;
System.out.println("show方法中:arr1[0] = " + arr1[0]); // 10 200 200
}
public static void main(String[] args) {
// 1.声明ArgumentTest类型的引用指向该类型的对象
ArgumentTest at = new ArgumentTest();
// 2.使用引用变量调用show1方法进行测试
int ib = 10;
at.show1(ib);
System.out.println("main方法中:ib = " + ib); // ib = 10
System.out.println("-------------------------------------------------");
// 3.调用show2方法进行测试
int[] arr2 = new int[]{10, 20};
at.show2(arr2);
System.out.println("main方法中:arr2[0] = " + arr2[0]); // 10 200 10
}
}
注意方法show2中new int【2】的作用。
二 重载与this
三 static、继承、final
static
• 在非静态成员方法中既能访问非静态的成员又能访问静态的成员。(成员:成员变量 + 成员方法, 静态成员被所有对象共享)
• 在静态成员方法中只能访问静态成员不能访问非静态成员。(成员:成员变量 + 成员方法, 因为此时可能还没有创建对象)
• 在以后的开发中只有隶属于类层级并被所有对象共享的内容才可以使用static关键字修饰。(不能滥用static关键字)
访问控制符
• public修饰的成员可以在任意位置使用。
• private修饰的成员只能在本类内部使用。
• 通常情况下,成员方法都使用public关键字修饰,成员变量都使用private关键字修饰。
final
• final关键字修饰类体现在该类不能被继承。
- 主要用于防止滥用继承,如:java.lang.String类等。
• final关键字修饰成员方法体现在该方法不能被重写但可以被继承。 - 主要用于防止不经意间造成重写,如:java.text.Dateformat类中format方法等。
• final关键字修饰成员变量体现在该变量必须初始化且不能改变。 - 主要用于防止不经意间造成改变,如:java.lang.Thread类中MAX_PRIORITY等。
四 抽象,
static,final,abstract三者的注意事项
abstract关键字不可以与final,private,static关键字共存,因为被final修饰的方法不可以被重写,意味着子类不可以重写该方法,如果abstract和final共同修饰父类中的方法,子类要实现抽象方法(abstract的作用),而final又不让该方法重写,这相互矛盾。
如果private和abstract共同修饰父类中的方法,private修饰则该方法不可以被子类访问,但是abstract修饰需要子类去实现,两者产生矛盾。
如果static和abstract共同修饰父类中的方法,static表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,这与abstract关键字矛盾。
抽象类和抽象方法的关系
• 抽象类中可以有成员变量、构造方法、成员方法;
• 抽象类中可以没有抽象方法,也可以有抽象方法;
• 拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有抽象方法并且使用abstract关键字修饰的类。
五 枚举
package enumcase;
public enum SeasonEnum {
SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天");
private final String name;
private SeasonEnum(String name)
{
this.name = name;
}
public String getName() {
return name;
}
}