java02 二、java封装、String类
1. 类和对象
1.1 类和对象的理解
类和对象的关系
类:类是对现实生活中一类具有共同属性和行为的事物的抽象
对象:是能够看得到摸的着的真实存在的实体
简单理解:类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
1.2 类的定义
类的组成是由属性和行为两部分组成
属性:在类中通过成员变量来体现(类中方法外的变量)行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
1.3 成员变量和局部变量
1.3.1 成员变量和局部变量的区别
(1)类中位置不同:
成员变量(类中方法外)
局部变量(方法内部或方法声明上)
(2)内存中位置不同:
成员变量(堆内存)局部变量(栈内存)
(3)生命周期不同:
成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
(4)初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)
2. 封装
2.1 private关键字
private是一个修饰符,可以用来修饰成员(成员变量,成员方法)
(1)被private修饰的成员,只能在本类进行访问。针对private修饰的成员变量,如果需要被其他类使用,提供public 修饰的get/set方法。
2.2 this关键字
this修饰的变量指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
2.3 封装思想
(1)封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
(2) 封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
(3)封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
3. 构造方法
3.1 构造方法的注意事项
(1) 构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数构造方法 如果定义了构造方法,系统将不再提供默认的构造方法
(2)构造方法的重载
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
(3)推荐的使用方式
无论是否使用,都手工书写无参数构造方法
(4)重要功能
可以使用带参构造,为成员变量进行初始化
4. API
4.1 API概述
API (Application Programming Interface) :应用程序编程接口
java中的API指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
5 String类
5.1 String类特点
字符串不可变,它们的值在创建后不能被更改
虽然 String 的值是不可变的,但是它们可以被共享
字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )
5.2创建字符串对象两种方式的区别(1)通过构造方法创建通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
(2)直接赋值方式创建以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
例如:char [] ch={‘a’,’b’};
String str1=new String(ch);
String str2=new String(ch);
String str3=”abc”;
String str4=”abc”;
|
栈内存 |
堆内存 |
||||
|
char[] ch ---001 |
001--
|
||||
|
String str1 --002 |
002--new String—ref 001 |
||||
|
String str2 --003 |
003--new String—ref 001 |
||||
|
String str3--004 |
常量池 004 -”abc” |
||||
|
String str4--004 |
5.3字符串的比较【理解】
(1 )使用==
基本类型:比较数值
引用类型:比较的是对象地址值
(2)equals方法的作用
比较对象的内容是否相同
注意:String是对象,比较内容用equals
5.3字符串拼接
5.3.1String拼接
每次拼接都会新建一个string对象,耗时浪费空间。
String s=”hello”;
S+=”world”;
|
栈内存 |
堆内存 |
|
main()
String s |
常量池 001 hello 002 world 003 helloworld |
5.3.2 StringBuilder类概述
StringBuilder是一个可变的字符串类,这里的可变指的是 StringBuilder 对象中的内容是可变的.
StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;
StringBuffer是线程安全的。
浙公网安备 33010602011771号