Java语言基础(三)
一、类和对象
对象
属性:对象具有的各种特征 每个对象的每个属性都有特定的值
行为:对象能够执行的操作
使用:创建对象 类名 对象名 = new 类名();
使用对象 成员对象:对象名.变量名 成员方法:对象名.方法名()
(注:new产生的内容在堆内存 堆内存中的成员有默认值 main方法 方法在栈内存中 存储空间只有一个 对象可以公用一个方法 但属性不一定
类
对现实生活中一类具有共同属性和行为的事物的抽象
类是对象的数据类型 是具有相同属性和行为的一组对象的集合
定义:public class 类名{成员变量 成员方法}
二、成员变量和局部变量
成员变量
类中方法外的变量 堆内存 随对象存在消失 有默认的初始化值
局部变量
方法中的变量(或方法声明上)栈内存 随方法调用存在消失 无默认的初始值 必须先定义 赋值 才能使用
三、封装
private关键字
权限修饰符 修饰成员(变量和方法)
作用:保护成员不被其他类使用 被private修饰的成员只能在本类中才能访问
提供“get变量名()”方法 用public修饰 “set变量名(参数)”方法 用public修饰
this关键字
同名:this 成员变量 未加this 局部变量
不同名:未加this 成员变量
什么时候使用this?解决局部变量隐藏成员变量
代表所在类的对象引用 方法被哪个对象调用 this就代表哪个对象
封装
面向对象三大特征之一(封装 继承 多态)
封装原则: 类的某些信息隐藏在内部 不允许外部程序直接访问 而是通过提供的方法来实现对隐藏信息的操作和访问
成员变量private getXxx() setXxx()方法
安全性 复用性
构造方法
一种特殊的方法 作用:创建对象,完成对象数据的初始化
没有构造器时,系统会默认给我们分配一个空构造器。为了预防无构造器而导致的报错,建议在类中写一个空构造器。<推荐>无论是否使用,都手工书写无参构造方法
idea:alt+insert 不选择属性生成一个空构造器,选择属性构成一个有参数的构造器,提高工作效率。
public class 类名{ 修饰符 类名(参数){...}}
若没有定义构造方法,系统将给出一个默认的无参数构造方法。
若定义构造方法,系统将不再提供默认的构造方法。
若自定义带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法
四、String StringBuilder
API
Application Programming Interface 应用程序编程接口
Java API:JDK中提供各种功能的Java类,将底层的实现封装了起来
String
java.long包下 不需要导包
String类代表字符串 Java程序中所有的双引号字符串,都是String类的对象。
效果上相当于字符串数组char[],但底层原理是字节数组byte[]
(注:JDK8以前是字符数组,JDK9以后是字节数组
String构造方法
常见构造方法:
//1.String():无参构造
String s1 = new String();
//相当于String s1 = "";
//创建一个空白字符串对象,不含任何内容
//2.String(byte[] bytes):使用一个byte[]数组构造
byte[] bytes = {97,98,99,100};
String s2 = new String(bytes);
//根据字节数组的内容来创建字符串对象
//3.String(char[] chars):使用一个char[]数组构造
char[] chars = {'a','b','c','d'};
String s3 = new String(chars);
//根据字符数组的内容来创建字符串对象
//4.String(String s):使用一个String构造一个String
String s4 = new String("Hello world!");
//直接赋值的方式来创建字符串对象
常用String s = “hello”;
String对象的特点:通过new创建的String字符串对象,每一次new都会申请新内存空间。虽然内容相同,但地址不同。以“ ”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。
字符串的比较
使用==比较: 基本类型:比较数据值是否相同/引用类型:比较地址值是否相同
字符串是对象用equals()来实现比较内容是否相同
public boolean equals(Object anObject);
通过帮助文档查看String中的方法
public boolean equals(Object anObject);
public char charAt(int index); 返回指定索引处的char值,字符串的索引也从0开始
public int length(); 字符串长度 (注:数组长度:数组名.length
publicn boolean endWith(Stirng suffix); 测试此字符是否以指定的后缀结尾
StringBuilder
一个可变的字符串类 可以看成是一个容器
StringBuilder构造方法
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容。
public StringBuilder(String str)根据字符串的内容赖床加可变字符串对象。
public StringBuilder append(任意类型) 添加数据,并返回数据本身。
public StringBuilder reverse() 返回相反的字符序列
(注:链式编程:sb.append("hello").append("world").append("java");
StringBuilder和String相互转换
public String toString(); StringBuilder->String
public StringBuilder(String s); String->StringBuilder //利用StringBuilder构造方法
补充:
1.判断字符大小写/数字
大写 ch>='A'&&ch<='Z'
小写 ch>='a'&&ch<='z'
数字 ch>='0'&&ch<='9'
2.Non-static method cannot be referenced from a static context
静态方法无法调用自己定义的非静态方法
解决方法:1)将非静态方法改为静态方法,加static
2)在main主方法实例化非静态方法的对象
3.内容比较(upper case/lower case)
区分大小写 public boolean equals(String s);
不区分大小写 public boolean equalsIgnoreCase(String s);
4.String 拼接可用"=+"
五、集合基础 ArrayList
集合
集合类特点
提供一种存储空间可变的存储模型,存储数据容量可以发生改变。
ArrayList<E>
可调整大小的数组实现 “容器”
在出现E的地方用引用型数据类型替换(z.B. String、Student
public ArrayList(); 创建空集合对象
public boolean add(E e); 将指定元素追加到此集合末尾
(注:用逗号分隔开,最后一个元素后面没有逗号
public void add(int index, E element); 在此集合中的指定位置插入指定元素
(注:后面元素向后移一个位置,要注意index范围0~length,不要索引越界
ArrayList<String> array = new ArrayList<>();
(注:输出时只有一个[],无内容
ArrayList集合常用方法
public boolean remove(Object o); 删除指定元素,返回删除是否成功
public E remove(int index); 删除指定索引处的元素,返回被删除的元素
public E set(int index, E element); 修改指定索引处的元素,返回被修改的元素
public E get(int index); 返回指定索引处的元素
public int size(); 返回集合中的元素个数
(注:index注意索引越界0~length
补充:
1)sc.close(); 停止Scanner录入
2)System.exit(0); JVM退出