-
目录
-
1.类的组成
- 类就是对现实事物的一种描述
- 属性:在类中通过成员变量来体现(类中方法外的变量)
- 构造方法
- 作用:初始化类的对象,并返回对象地址
- 两种构造:有参构造,无参构造。(方法的重载)
- 注意事项:默认自带无参构造,若只定义了有参构造,无参构造就没有了,构造方法名字与类相同
- 普通方法
-
2.对象的使用
- 创建对象的格式:
- 类名 对象名 = new 类名();
- 调用成员的格式:
- 对象名.成员变量
- 对象名.成员方法();
- 创建对象的格式:
-
3.多个对象内存图
- 方法区:
- 栈内存:
- 堆内存:
- 成员变量使用过程
- 成员方法调用过程
- 总结:多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份
-
4.成员变量与局部变量
- 主要区别
-
5.面向对象三大特性—封装
- 对象代表什么,就得封装对应的数据,并提供数据对应的行为
- 5.1封装要求
- 一般建议对成员变量使用private(私有、隐藏)关键字修饰(private修饰的成员只能在当前类中访问)
- 为每个成员变量提供配套public修饰的getter、setter方法暴露其取值和赋值
- 5.2this关键字
- 可以出现在构造器,方法中
- 代表当前调用者的地址(用于区别成员变量与局部变量)
public Commodity(String name, double price) {
**this.name** = name; //用于给属性赋值
<u>**this.price**</u> = price;
}
- 5.3标准JavaBean
- 成员变量使用private修饰
- 提供成员变量对应的setXxx()、getXxx()方法
- 需提供一个无参构造器,带全部参数的构造器
-
6.键盘录入笔记
- Scanner sc = new Scanner(System.in);
- 6.1录入格式
-
- next()、nextLine()、nextInt()、nextDouble()
-
- 6.2底层细节
- next(),nextInt(),nextDouble()在接收数据的时候,会遇到空格,回车,制表符其中一个就会停止接收数据。但是这些符号 + 后面的数据还在内存中并没有接收。如果后面还有其他键盘录入的方法,会自动将这些数据接收。
- nextLine()方法是把一整行全部接收完毕。
- 6.3两套键盘录入方法
- next()、nextInt()、nextDouble()这三个配套使用。
- nextLine()单独使用。
如果想要整数,那么先接收,再使用Integer.parseInt进行类型转换。
-
7.常用API—String
- 来自包java.lang.String,java使用的时候不需要导包
- 7.1String类的构造方法
- 常用的构造方法
- 7.2创建字符串对象的两种方式的区别
- 通过构造方法创建:
- 通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
- 直接赋值方式创建:
- 以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
- 通过构造方法创建:
- 7.3字符串的比较
- 比较基本数据类型:比较的是具体的值
- 比较引用数据类型:比较的是对象地址值
- equals方法的作用:public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写
- char c = str.charAt(i);//可以根据索引i取得字符串str中的字符
- str.length();//获取字符串的长度
- 7.4StringBuilder
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。- 创建对象:StringBuilder sb = new StringBuilder("abc")
- 添加元素与链式编程:sb.append(1).sb.append(2.3).sb.append(true);
- 反转:sb.reverse();
- 获取长度:int len = sb.length();
- 打印与普及: System.out.println(sb);
- //因为StringBuilder是Java已经写好的类
- //java在底层对他做了一些特殊处理。
- //打印对象不是地址值而是属性值
- 7.5StringJoiner
StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
JDK8出现的- 创建对象:StringJoiner sj = new StringJoiner("---");
- 添加元素:sj.add("aaa").add("bbb").add("ccc");
- 获取长度:int len = sj.length();
- 打印: System.out.println(sj);
- 7.6String常用的API
- String常用API
- 7.7字符串的小扩展
- 来自包java.lang.String,java使用的时候不需要导包
- 字符串存储的内存原理:
- String s = “abc”;直接赋值
- 特点:此时字符串abc是存在字符串常量池中的。
- 先检查字符串常量池中有没有字符串abc,如果有,不会创建新的,而是直接复用。如果没有abc,才会创建一个新的。
- 所以,直接赋值的方式,代码简单,而且节约内存。
- new出来的字符串
- 看到new关键字,一定是在堆里面开辟了一个小空间。
- new与直接赋值对比
- String s1 = new String(“abc”);
- String s2 = “abc”;
- s1记录的是new出来的,在堆里面的地址值。
- s2是直接赋值的,所以记录的是字符串常量池中的地址值。
- String s = “abc”;直接赋值
- ==号比较的到底是什么?
- 如果比较的是基本数据类型:比的是具体的数值是否相等。
- 如果比较的是引用数据类型:比的是地址值是否相等。
- 结论:==只能用于比较基本数据类型。不能比较引用数据类型。
-
8.ArrayList
- 集合是与数据组类似,也是一种容器,用于装数据的
- 定义:ArrayList<N> list = new ArrayList(); //注意N是泛型可以写也可以不写(用来固定某种数据类型),并且只能填写引用数据类型
- 数组的特点:定义完成后,类型确定,长度固定
- 集合的特点:大小不固定,启动后可以动态变化,类型也可以选择不固定
- 成员方法:
2.Java面向对象(上篇)
于 2024-08-19 10:25:24 首次发布