Java学习笔记(四)--封装 String类 StringBuffer StringBuilder

封装

1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2.好处:
-提高了代码的复用性
-提高了安全性
3.体现:将不需要对外提供的内容都隐藏起来。
4.做法:把属性隐藏,提供公共方法对其访问。
5.修饰符关键字:private
-私有的意思
-可以修饰成员变量和成员方法
-特点:被private访问。修饰的内容,只能在本类中。
6.封装加入private后的标准代码:

-成员变量用private修饰
-针对每一个成员变量给出get/set方法

this关键字

就近原则:

局部变量如果有一个变量和成员变量一致,那么优先使用局部变量。

造成一个结果:

局部变量隐藏了成员变量。

为了解决这种情况,java提供了一个代表本类对象的关键字:this。this这个关键字指代本类中的一个对象,谁调用this,this指代谁。
需求:定义一个学生类。

public static class Student{
    //私有化成员变量
    private String name;
    private int age;
    //对外提供get/set函数
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
    //功能性方法
    public void study(){
        System.out.println("学生需要学习");
    }
    public void sleep(){
        System.out.println("学生需要睡觉");
    }
}

构造方法

1.构造方法:给对象的数据进行初始化。
2.构造方法特点:

-方法名与类名相同
-无返回值类型
-无返回值
-如果你没有提供构造方法,系统会默认给出无参构造方法
-构造方法可以重载

3.标准代码:

第一步:私有化成员变量;
第二步:为私有化成员变量提供set/get方法;
第三步:构造无参和有参构造方法
第四步:写功能性方法

需求:写一个标准手机类:
成员变量:
brand,price,color
构造方法:
无参,带参
成员方法:
getXxx()/setXxx()
功能性方法:
show(),call()

public class Phone{
    //私有化成员变量
    private String brand;
    private int price;
    private String color;
    //为私有化成员变量提供set/get方法
    public void setBrand(String brand){
        this.brand=brand;
    }
    public String getBrand(){
        return brand;
    }
    public void setPrice(int price){
        this.price=price;
    }
    public String getPrice(){
        return price;
    }
    public void setColor(String color){
        this.color=color;
    }
    public String getColor(){
        return color;
    }
    //构造无参和有参构造方法
    public void Phone(){}
    public void Phone(String brand,int price,String color){
        this.brand=brand;
        this.price=price;
        this.color=color;
    }
    //功能性方法
    public void show(){
        System.out.println("show这个手机");
    }
    public void call(){
        show(),call("手机可以打电话");
    }
}

需求:定义一个类MyMath,提供基本的加减乘除功能,然后进行测试。
add(int a,int b)
sub(int a,int b)
mul(int a,int b)
div(int a,int b)

public class MyMath{
    public int add(int a,int b){
        return a+b;  //加法
    }
    public int sub(int a,int b){
        return a-b;  //减法
    }
    public int mul(int a,int b){
        return a*b;  //乘法
    }
    public int div(int a,int b){
        return a/b;  //除法
    }
}

需求:定义一个长方形类,定义求周长和面积的方法。

public class Rectangle{
    public int perimeter(int length,int width){
        return 2*(length+width);
    }
    public int area(int length,int width){
        return length*width;
    }
}

需求:定义一个测试类Test,进行测试长方形类。

public class Test{
    Rectangle r = new Rectangle();
    int perimeter = r.rectangle(10,20);
    System.out.println(perimeter);
    int area = r.area(10,20);
    System.out.println(area);
}

static关键字

1.作用:可以修饰成员变量和成员方法。
2.特点:

-随着类的加载而加载
-优先于对象而存在
-被类的所有对象共享
-可以通过类名调用
    --非静态的:创建对象访问
    --静态的:可以通过类名,也可以通过对象访问

例如:

饮水机:static
水杯:特有的内容

3.注意事项;

-static方法中没有this关键字,因为静态的内容通过累的加载而加载,this是随着对象的创建而存在。
-静态方法只能访问静态的成员。

String类

1.由多个字符组成的一串数据(字符序列)。字符串可以看做一个字符数组。
2.构造方法:

public String():无参构造方法
public String(byte[] bytes):把字节数组转换为字符串
public String(char[] value):把字符数组转换为字符串
publicString(char[] value,int offset,int count):把字符数组的一部分转换为字符串
public String(String original):把字符串转换为字符串

需要利用到的一个成员方法:

public int length() //返回此字符串长度

3.特点:
-字符串是常量,字符串的内容不能发生改变,但是字符串引用的指向是可以发生改变的。
-变量相加,先开空间,再加。
常量相加,先加,找是否有这样的数据空间,如果没有才开空间。
4.String类的成员方法(判断功能):

boolean equals(Object obj):比较两个字符串的内容是否相同,严格区分大小写。
boolean equalsIgnoreCase(String str):比较两个字符串的内容是否相同,不区分大小写。
 boolean contains(String str):判断字符串中是否包含一个子串。
boolean startsWith(String str):判断是否以指定的字符串开头。
boolean endsWith(String str):判断是否以指定的字符串结尾
boolean isEmpty():判断字符串的内容是否为空。

String类的成员方法(获取功能):

int length():返回字符串的长度。其实就是字符的个数。
char charAt(int index):返回字符串中指定索引处的字符。
int indexOf(int ch):返回指定的字符在字符串中第一次出现的索引。
int indexOf(String str):返回指定的字符串在字符串中第一次出现的索引。
String substring(int start):截取从start开始到末尾的字符串。
String substring(int start,int end):截取从start开始到end结束的字符串。

String类的成员方法(转换功能):

byte[] getBytes():把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转换为字符串
static String valueOf(int i):把int类型的数据转换为字符串
valueOf():可以把任意类型的数据转换为字符串。
String toLowerCase():把字符串转成小写
String toUpperCase():把字符串转成大写
String concat(String str):拼接字符串

String类的成员方法(替换功能):

String replace(char old,char new)
String replace(String old,String new)

String类的成员方法(去除字符两端的空格):

String trim()

StringBuffer和StringBuilder

1.StringBuffer:线程安全的可变字符序列。
与String区别:

String内容不可变
StringBuffer内容可变

与StringBuilder区别:

String 线程安全,效率低
StringBuffer 线程不安全,效率高

2.构造方法:

    StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。
    StringBuffer(Int Capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为capacity个字符。
    StringBuffer(String str):构造一个其中带字符的字符串缓冲区。

3.成员方法:

    public int length():返回长度(字符数),实际值。
    public int capacity():返回当前容量,理论值。
     -添加功能:添加元素,并返回本身的对象。
        --public StringBuffer append(String str):追加数据,在末尾添加
        --public StringBuffer insert(int offset,String str):插入数据,在指定位置添加    
    -删除功能:
        --public StringBuffer deleteCharAt(int index):删除指定索引处的字符
        --public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右
    -替换功能:
        public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据
    -反转功能:
        public StringBuffer reverse()
    -截取功能:返回值类型是String类型,本身没有发生改变
        --public String substring(int start)
        --public String substring(int start,int end) 

5.相互转换:
-String – StringBuffer

        String s = "hello";
        // 方式1
        StringBuffer sb1 = new StringBuffer(s);
        // 方式2
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);

-StringBuffer – String

        StringBuffer sb = new StringBuffer("world");
        //方式1
        String s1 = sb.substring(0);
        //方式2
        String s2 = sb.toString();
        //方式3
        String s3 = new String(sb);

你可能感兴趣的:(JavaSE)