forword:
面向对象编程(oop):对象为中心,指挥对象实现具体功能
面向过程编程(pop):过程为中心,自己实现每一步功能
一、类和对象内容补充
1、类与对象
(1)根据类创建对象,类由属性和行为组成(属性是指事物的各种特征:体现为成员变量有特定值;行为是指事物存在的功能:体现为成员方法)
(2)带有main方法的类通常称为测试类
2、对象内存图
(1)单个对象内存图
(2)两个对象内存图(创建第二个对象时,.class字节码文件无需重新加载)
(3)两个引用指向相同内存图
(4)垃圾回收:堆内存中,对象或数组产生的地址通过任何方式都不能被找到后,被判定为内存中的垃圾,垃圾会被java垃圾回收器空闲的时候自动进行清理
3、this内存原理
note:方法被某个对象调用,方法中的this就对应该对象
€1 通过程序感受this和对象相对应
4、封装的三大体现(封装:隐藏实现细节,仅对外暴露公共的访问方式)
(1)将代码抽取到方法中,实现对代码的封装
(2)将属性抽取到类中,实现对数据的封装
(3)私有成员变量,提供set和get方法
€2 get方法所得属性可进一步操作运行
二、API:应用程序编程接口
java API:JDK中提供的各种功能的java类
notes:
(1)利用帮助文档可查找目标java类所在包、构造方法、创建对象方法等
(2)类的使用都是通过创建对象调用成员变量和成员方法实现
(3)要明确所用的类存储在哪个包里,使用时首先导入包
1、Scanner类(常用于实现键盘键入并接收)
常用方法:
(1)next();用于返回字符串
(2)nextLine ();用于完整返回字符串
(3)nextInt();用于返回整数
€1 Scanner类nextInt方法使用实现动态初始化一维数组
€2 Scanner类方法使用练习
€3 Scanner类nextInt方法和nextLine方法使用练习
针对next Line方法和nextInt方法连用出现错误,我们将nextLine方法换为next方法再次运行
€4 Scanner类中nextLine方法与next方法辨析使用
2、String类(用于创建字符串类型对象,对字符串作加密、增删、拆分数组等操作)
notes:
(1)String类在java.lang包下,使用时不需要导包
(2)String类代表字符串,java程序中所有字符串文字都被实现为此类的实例,java程序中所有双引号字符串都是String类的对象
(3)字符串不可变,它们的值在创建后不可更改
€1 String类中对象创建(字符串类型)以及字符串长度计算,此处用的构造方法是直接赋值法,双引号内容即为字符串对象
(4)String类常用构造方法
(i) public String();创建一个空白字符串对象,不含任何内容
(ii)public String(char[]数组名);根据字符数组内容,创建字符串对象
(iii) public String(String original);根据传入的字符串内容,创建字符串对象
(iiii) String s="abc";直接赋值的方式创建字符串对象,内容就是abc
€2 String类无参构造和通过字符串对象构造字符数组练习
€3 String类带初始值构造
(5)构造方法和双引号直接赋值都可创建对象,二者区别何在:
(1)用==作比较运算时,有以下区别
(2)以""给出的字符串,只要字符串序列相同(顺序和大小写) ,无论在程序代码中出现几次,JIM都只会建立一个String对象,并在字符串常量池中维护。(Note:字符串常量池:当使用双引号创建字符串对象时,系统会检查该字符串在字符串常量池是否存在,若不存在则创建,若存在则直接复用)
(3)以new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但地址值不同
(4)接下来继续看代码比较创建对象的区别
(5)字符串的比较
(==作比较)
(i)基本类型:比较数据值是否相同
(ii)引用类型:比较地址值是否相同
字符串是对象,它比较内容是否相同,通过方法equals()
public boolean equal(Object anObject):将此字符串与指定对象相比较,由于比较的是字符串对象,所以参数直接传递一个字符串
€4 字符串比较练习
€5 案例练习
€6 遍历字符串练习
分析:
(1)键盘录入字符串,用Scanner实现
(2)遍历字符串要求能够获取到字符串中的每一个字符,public char charAt(int index):返回指定索引处的char值,字符串的索引从0开始
(3)遍历字符串要求能够获取到字符串长度,public int length():返回字符串长度
(4)数组长度:数组.length 字符串长度:字符串对象.length()
方法一:字符串索引遍历
方法二:将字符串拆分成字符类型的数组
€7 统计字符次数练习
分析:
(1)键盘录入字符串,用Scanner实现
(2)统计三种类型的字符个数,需定义三个统计变量,初始值均为0
(3)遍历字符串,判断字符类型,对应统计变量+1
€8 手机号码部分字段隐藏练习
分析
(1)键盘录入字符串,用Scanner实现
(2)字符串截取两种方法:
(i)单参数法:String substring(int index):从指定索引处开始向后全部截取,然后返回新字符串
(ii)双参数法:String substring(int index1,int index2):从1号索引处开始截取,结束于2号索引处,包含1号索引,不包含2号索引(带头不带尾),然后返回新字符串
方法一:字符类型数组遍历,隐藏字段
方法二:利用String类中的substring方法截取特定字符段
附:substring截取字符段练习
€9 敏感内容打码练习
(1)键盘录入字符串,用Scanner实现
(2)String replace(Char target,Char replacement):将当前字符串中的target内容(旧内容),使用replacement(新内容)进行替换并且返回新字符串
€10 按照一定分割符切割字符串练习
(1)键盘录入字符串,用Scanner实现
(2)编写Student类,用于封装数据(属性)
(3)根据逗号切割字符串,得到 张三 23
String [] split (String regex ):根据传入的字符串作为规则进行切割,切割后内容存入字符串数组中,返回字符串数组
(4)从返回的字符串数组中取出元素内容,通过Student类的含参构造方法封装为对象
(5)调用对象中get方法,打印展示
Note:String类方法小结
public boolean equals(Object anObject):比较字符串内容,严格区分大小写
public boolean equalsIgnoreCase(String anotherString):比较字符串内容,忽略大小写
public int length():返回字符串长度
public char charAt(int index):返回指定索引处的char值
public char[] toCharArray():将字符串拆分为字符数组后返回
public String substring(int beginIndex,int endIndex):根据开始和结束索引进行截取,得到新字符串(含头不含尾)
public String substring(int beginIndex):从传入的索引处开始截取,截取到末尾,得到新字符串
public String replace(CharSequence target,CharSequence replacement ):使用新值将字符串中的旧值替换,得到新字符串
public String [] split(String regex):根据传入的规则切割字符串,得到字符串数组