犯的错误:
1.区分viod(无返回值的意思),不写就:缺少返回语句
2.记得写show(显示的意思),不写就:什么也不显示
1.封装概述
封装是面向对象三大特征之一(封装,继承,多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作的
2.封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx()方法
3.封装好处
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
构造方法
构造方法概述
构造方法是一种特殊的方法,作用:创建对象
格式:
public class 类名{
修饰符 类名(参数){ }
}
//修饰符一般采用public
功能:主要是完成对象数据的初始化
构造方法注意事项
构造方法的创建
当一个类中没有给任何的构造方法,系统会给一个默认的无参构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
构造方法的重载
如果自定义了带构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法。
推荐的使用方式
无论是否使用,都手工书写无参数构造方法
标准类制作
成员变量
使用private修饰
构造方法
1提供一个无参数构造方法
2提供一个带多个参数的构造方法
3成员方法
提供每一个成员变量对应的setXxx()/getXxx()
提供一个显示对象信息的show()
4创建对象并为其成员变量赋值的两种方式
无参构造方法创建对象后使用setXxx()赋值
使用带参构造方法直接创建带走属性值的对象
字符串
API
API应用程序编程入口
机器人踢足球,控制机器人的接口类,这些类中定义了操作机器人各种动作的方法,这种接口类就是机器人厂商给应用程序编程的入口,大家把这些类称为API
javaAPI指的就是JDK中提供的各种功能的java类
这些类将底层的实现封装了起来,我们不需要关系这些类是如何实现的,只需要学习这些类如何实现,我们可以通过帮助文档来学习这些API如何使用。
打开帮助文档(CHM格式)—找到索引选项卡中的输入框—在输入框中输入Random—看类在哪个包下(例:软件包:java util~java.long是不需要导包的)—看类的描述信息(该类的信息用于生成随机数,知道这类的信息是干什么的)—看构造方法(有一个无参一个带参)—看成员方法(方法很多,主要看:返回值,方法名,参数,是int就给int,要什么给什么,看描述)
String
String概述
String类在java.lang包下,所以使用的时候不需要导包
String类代表字符串,java程序中的所有字符串文字(例如“abc”)都被实现为此类的实例,也就是说,java程序中所有的双引号字符串,都是String类的对象
字符串的特点
1字符串不可变,它们的值在创建后不能被更改
2虽然String的值是不可变得,但是他们可以被共享
3字符串效果上相当于字符数组(char[])但是底层原理是字节数组(byte[])
String构造方法
方法名 说明
public String() 创建空白字符串对象,不 含任何内容
public String(char[] chs) 根据字符数组的内容,来创建字符串对象
public String(byte[]bys) 根据字节数组的内容,来创建字符串对象
String s="abc"; 直接赋值的方式创建字符串对象,内容就是abc
String对象的特点
1。通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同,
char[]chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs);
上面的代码中,jvm会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的
2以""方式给出的字符串,只要字符序列相同,(顺序和大小写),无论在程序代码中出现几次,jvm都只会建立一个String对象,并在字符串池中维护
String s3="abc";
String s4="abc";
在上面的代码中,针对第一行代码,jvm会建立一个String对象放在字符串池中,并给s3参考;第二行则让s4直接参考字符串中的String对象,也就是说他们本质上是同一个对象
字符串的比较
使用==作比较
基本类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
字符串时对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()
public boolean equals(Object anObject):将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递一个字符串
比较地址用==;s1==s2;
比较内容用equals()方法;s1.equals(s2);
通过帮助文档查看String中的方法
方法名 说明
public boolean equals(Object anObject) 比较字符串的内容,严格区分大小写(用户名和密码)
public char charAt(int index) 返回指定索引处的char值
public int length() 返回此字符串的长度
StringBuilder
如果对字符串进行拼接操作,每次拼接都会构建一个新的spring对象,既耗时又浪费内存空间,而这种操作还不可避免,那么有没有一种比较好的方法可以解决这个问题呢?答案是肯定的,我们可以通过将我提供的StringBuilder类来解决这个问题
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。
这里的可变指的是StringBuilder对象中的内容是可变得
String和StringBuilder的区别
String内容是不可变的,没有就创建一个
StringBuilder内容是可变的
StringBuilder构造方法
方法名 说明
public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
StringBuilder的添加和反转方法
方法名 说明
public StringBuilder append(任意类型) 添加数据,并返回对象本身
public StringBuilder reverse() 返回相反的字符序列
StringBuilder和String的相互转换
StringBuilder转换为String
public String toStrong() 通过toString()就可以实现把StringBuilder转换为String
String转换为StringBuilder
public StringBuilder(String s) 通过构造方法就可以实现把String 转换为StringBuilder
通过帮助文峰查看StringBuilder的方法
方法名 说明
public StringBuilder append(任意类型) 添加数据,并返回对象
public StringBuilder reverse() 返回相应的字符序列
public String toString() 通过toString()就可以实现把StringBuilder转换为String