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--

0

‘a’

1

‘b’

 

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是线程安全的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-12-16 09:24  烁妈妈  阅读(88)  评论(0)    收藏  举报