类、封装和构造
类和对象
类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物。
对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。
public class ClassName { //成员变量 //成员方法 }
封装
1. 使用 private 关键字来修饰成员变量。
2. 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。
this代表所在类的当前对象的引用(地址值),即对象自己的引用。
构造方法
修饰符 构造方法名(参数列表){ // 方法体 }
1. 如果你不提供构造方法,系统会给出无参数构造方法。
2. 如果你提供了构造方法,系统将不再提供无参数构造方法
3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
常用类
API
API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档。
1. 打开帮助文档。2. 点击显示,找到索引,看到输入框。 3. 你要找谁?在输入框里输入,然后回车。 4. 看包。java.lang下的类不需要导包,其他需要。 5. 看类的解释和说明。 6. 学习构造方法。
引用类型使用
import 包名.类名;
数据类型 变量名 = new 数据类型(参数列表); 变量名.方法名();
Scanner类
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
Random类
Random r = new Random(); int i = r.nextInt();
public int nextInt(int n) :返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的 int 值。
获取1-n之间的随机数,包含n:int number = r.nextInt(n) + 1;
String类
1. 字符串不变:字符串的值在创建后不能被更改
内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。
内存中只有一个"abc"对象被创建,同时被s1和s2共享
String底层是靠字符数组实现的。相当于: char data[] = {'a', 'b', 'c'};
无参构造,通过字符数组构造,通过字节数组构造
常用方法
equals判断功能的方法
s1.equals(s2); 比较字符串的内容是否相同
s1.equalsIgnoreCase(s2); 比较字符串的内容是否相同,忽略大小写
获取功能的方法
s.length(); 获取字符串的长度,其实也就是字符个数
s.concat(" world"); 将将指定的字符串连接到该字符串的末尾.
s.charAt(0); 获取指定索引处的字符
s.indexOf("l"); 获取str在字符串对象中第一次出现的索引,没有返回‐1
s.substring(5); 从start开始截取字符串到字符串结尾
s.substring(3,8); 从start到end截取字符串。含start,不含end
转换功能的方法
s.toCharArray(); 把字符串转换为字符数组
s.getBytes(); 把字符串转换为字节数组
str.replace("it", "IT"); 替换字母it为大写IT
分割功能的方法
s.split("|"); 将此字符串按照给定的regex(规则)拆分为字符串数组。
static关键字
它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
静态代码块
定义在成员位置,使用static修饰的代码块{ }。
位置:类中方法外。 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。 格式:
Arrays类
System.out.println(arr); 打印数组,输出地址值
Arrays.toString(arr); 数组内容转为字符串
Arrays.sort(arr); 升序排序
扩容: array= Arrays.copyOf(array,array.length+1);
Math类
Math.abs(‐5); d1的值为5,返回 double 值的绝对值。
Math.ceil(‐3.3); d2的值为 ‐3.0,返回大于等于参数的最小的整数。
Math.floor(3.3); d1的值为3.0,返回小于等于参数最大的整数。
Math.round(5.5); d1的值为6.0,返回最接近参数的 long。(相当于四舍五入方法)
继承、构造方法、super,抽象类
继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。
1. 提高代码的复用性。 2. 类与类之间产生了关系,是多态的前提
通过 extends 关键字,可以声明一个子类继承另外一个父类
方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 果,也称为重写或者复写。声明不变,重新实现。
构造方法
1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的
2. 构造方法的作用是初始化成员变量的。所以子类执行构造方法过程中,必须先执行父类的构造方法。子类的构 造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。
super :代表父类的存储空间标识(可以理解为父亲的引用)
抽象类abstract
修饰符 abstract 返回值类型 方法名 (参数列表);
如果一个类包含抽象方法,那么该类必须是抽象类。
继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。
抽象类无法被实例化