今日学习总结
1、引用数据类型_类
2、自定义类的格式
3、类的内存图
4、成员变量与局部变量
5、封装
6、private关键字
7、get and set方法
8、this关键字
9、构造方法
10、API概述
11、String
12、字符串的比较
1、引用数据类型_类
* A: 数据类型
* a: java中的数据类型分为:基本类型和引用类型
* B: 引用类型的分类
* a: Java为我们提供好的类,比如说:Scanner,Random等。
* b: 我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。
2、自定义类的格式
* A: 自定义类的格式
* a: 使用类的形式,对现实中的事物进行描述。
* b: 事物由方法和属性两部分组成。
* 方法: 这个事物具备的功能。
* 属性: 这个事物具备的特征。
* c: 格式
public class 类名{
属性定义
修饰符 数据类型 变量名 = 值
方法定义
修饰符 返回值类型 方法名(参数列表){
}
}
3、类的内存图
通过类Phone创建出来的变量p,它相当于我们生活中的盒子,里面包含了它能够使用的属性。
通过 p.属性名 就可以对属性进行操作
与引用类型数组类似,引用类型的自定义类型的变量,直接变量时,结果为对象地址值,这里可以通过内存图简单解释。
4、成员变量与局部变量
5、封装
* A.面向对象三大特征
* 封装、继承、多态
* B.封装表现
* 1、方法就是一个最基本封装体
* 2、类其实也是一个封装体
* C.封装的好处
* 1、提高了代码的复用性
* 2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念
* 3、提高了安全性
6、private关键字
* A.private概述
* private可以修饰成员内容包括成员方法和成员变量
* 被private修饰的内容不能在其他类访问
* B.使用步骤
* 1、通过private修饰属性
* C.完整代码
class Person {
private int age;
private String name;
public void show() {
System.out.println("age=" + age + ",name" + name);
}
}
7、get and set方法
* A.get和set方法
* 年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,这样还是不行,那肿么办呢?按照之前所学习的封装的原理,隐藏后,还需要提供访问方式。只要对外提供可以访问的方法,让其他程序访问这些方法。同时在方法中可以对数据进行验证。
一般对成员属性的访问动作:赋值(设置 set),取值(获取 get),因此对私有的变量访问的方式可以提供对应的 setXxx或者getXxx的方法。
class Person {
// 私有成员变量
private int age;
private String name;
// 对外提供设置成员变量的方法
public void setAge(int a) {
// 由于是设置成员变量的值,这里可以加入数据的验证
if (a < 0 || a > 130) {
System.out.println(a + "不符合年龄的数据范围");
return;
}
age = a;
}
// 对外提供访问成员变量的方法
public void getAge() {
return age;
}
}
* 总结
* 类中不需要对外提供的内容都私有化,包括属性和方法。
* 以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问
* 注意
* 私有仅仅是封装的体现形式而已
8、this关键字
* A.this修饰成员变量
* 当类中存在成员变量和局部变量同名的时候为了区分,就需要使用this关键字
* B.代码示例
class Person {
private int age;
private String name;
public void speak() {
this.name = "小强";
this.age = 18;
System.out.println("name=" + this.name + ",age=" + this.age);
}
* C.作用
解决局部变量和成员变量重名时,局部变量隐藏成员变量的问题
9、构造方法
*A .作用
创建对象
*B .格式
public class 类名{
修饰符 类名(参数){
}
}
*C .功能
主要是完成对象数据的初始化
*D .构造方法的注意事项
*a.构造方法的创建
*如果没有定义构造方法,系统将给出一个默认的无参数构造方法
*如果定义了构造方法,系统将不再提供默认构造方法
*b.构造方法的重载
*如果定义了带参数的构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
10、API概述
API(Application Programming Interface)应用程序编程接口
Java API:指的就是JDK中提供的各种Java类
11、String
1.String类在java.lang包下,所以使用时不需要导包
2.String类代表字符串。Java程序中所有双引号字符串,都是String类对象
3.字符串特点:
*字符串不可变,它们的值在创建后不能被更改
*虽然String的值不可变,但是它们可以被共享
*字符串效果上相当于字符数组(char[ ]),但底层原理是字节数组(byte[ ])
ps:JDK8及以前是字符数组,JDK9以后是字节数组
4.String构造方法
*public String();创建一个空白字符串对象,不包含任何内容
例: String s1 = new String();
*public String(char[ ] chs);根据字符数组,创建字符串对象
例: char[ ] chs = {‘a’,‘b’,‘b’}
String s2 = new String(chs)
*public String (byte[ ] bys);根据字节数组,创建字符串对象
例: byte[ ] bys = {97,98,99}
String s3 = new String(bys)
*String s = "abc"
5.Srting对象特点
*a.通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
*b.以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护
内存图:
12、字符串的比较
*A .用 == 作比较
*a.基本类型:比较的是数据值是否相同
*b.引用类型:比较的是地址值是否相同
*B.字符串是对象,它比较内容是否相同,通过equals()方法实现
*a.public boolean equals(Object anObject) :将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串