目录
对象与类
1 构造器(构造方法)的分类
构造器用于初始化一个类的对象,并返回对象的地址(不能被继承、重写,但可以重载)
- 无参数构造器(默认存在):初始化对象时,成员变量的数据均采用默认值
- 任何类定义出来,默认就自带了无参数构造器,写不写都有
- 有参数构造器:在初始化对象时,同时可以为对象进行赋值
- 一旦定义了有参数构造器,默认存在的无参数构造器就没有了,此时需要自己写一个无参数构造器
- 构造器不能被继承、重写,但可以重载
2 this表示当前对象
常用于指向当前类对象的属性,或当前类对象的方法
3 封装——面向对象三大特征之一
隐藏实现细节,暴露出合适的访问方式(合理隐藏、合理暴露)
3.1 封装的实现步骤
- 一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问
- 提供public修饰的公开的getter、setter方法暴露其取值和赋值
3.2 封装的好处
- 加强了程序代码的安全性
- 适当的封装可以提升开发效率,同时可以让程序更容易理解与维护
3.3 JavaBean
- 可以理解成实体类,其对象可以用于在程序中封装数据
3.4 标准JavaBean的要求
- 成员变量使用private修饰
- 提供每一个成员变量对应的getter和setter方法
- 必须提供一个无参构造器
4 Scanner类
Scanner sc = new Scanner(System.in);//scanner输入对象
String id = sc.next();//接收输入值
String&ArrayList——两种常用API
1 String类
1.1 String类特点
- java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串
- Java程序中的所有字符串文字都是String类的对象
- String常被称为不可变字符串类型,它的对象在创建后不能被更改
- String变量每次的修改其实都是产生并指向了新的字符串对象
- 原来的字符串对象都是没有改变的
- 以" "方式给出的字符串对象,在字符串常量池中存储
1.2 String类创建对象的两种方式
- 方式一:直接使用“ ”定义(推荐方式)
String str="aaa";
- 方式二:通过String类的构造器创建对象
1.3 两种方式的区别(面试常考)
- 以 " " 方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在常量池中存储一份
- 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中
- String类不能被继承,是由final修饰的
1.4 String常见面试题
String s1 = new String("abc"); // 实际上创建了两个对象
一个是new String()对象
另一个是"abc"对象,"abc"也是一个String对象,只不过作为参数传入
String s1 = new String("abc"); // 实际上创建了两个对象
String s2 = "abc";
System.out.println(s1 == s2); //fasle
String s1 = "abc";
String s2 = "ab";
String s3 = s2 + "c";
System.out.println(s1 == s3); // false
String s1 = "abc";
// Java存在变异优化机制,程序在编译时:"a" + "b" + "c"会直接转成"abc"
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2); // true
1.5 字符串比较,==和equals的区别(面试题)
- ==比较基本类型时比较内容,比较引用类型时比较地址
- equals不能比较基本类型,重写前也比较地址,一般用于重写后比较内容
- equalsIgnoreCase忽略大小写比较内容
1.6 String类常用API——遍历、替换、截取、分割
❀idea常见代码简写方式
- psvm快速创建main方法;
- sout快速创建输出语句;
- 数组名.fori快速创建数组遍历循环;
- .var快速给出类名和被赋值的局部变量;
2 ArrayList集合
ArrayList是集合中的一种,它支持索引
2.1 数组与集合
- 数组的特点
- 数组定义完成并启动后,类型确定,长度固定
- 在个数不确定,且要进行增删数据操作时,不便于数组操作
- 集合的特点
- 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定
- 集合非常适合做元素个数不确定,且要进行增删操作的业务场景
- 集合提供了许多丰富、好用的功能
2.2 集合创建方法(泛型创建)
ArrayList<String> list = new ArrayList<>();//后边的泛型类型可以省略
- ArrayList:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型
- 集合中只能存储引用类型,不支持基本数据类型(int × =>Integer √)
- ArrayList中常用api
2.3 foreach循环遍历集合
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("20180302", "叶孤城", 23, "护理一班"));
students.add(new Student("20180303", "东方不败", 23, "推拿二班"));
students.add(new Student("20180304", "西门吹雪", 26, "中药学四班"));
students.add(new Student("20180305", "梅超风", 26, "神经科二班"));
System.out.printf("%8s%6s%6s%8s\n", "学号", "姓名", "年龄", "班级");
for (Student s : students) {//for-each循环
System.out.printf("%10s%6s%5d%8s\n", s.getId(), s.getName(), s.getAge(), s.getClassName());
}