1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2.好处:
-提高了代码的复用性
-提高了安全性
3.体现:将不需要对外提供的内容都隐藏起来。
4.做法:把属性隐藏,提供公共方法对其访问。
5.修饰符关键字:private
-私有的意思
-可以修饰成员变量和成员方法
-特点:被private访问。修饰的内容,只能在本类中。
6.封装加入private后的标准代码:
-成员变量用private修饰
-针对每一个成员变量给出get/set方法
就近原则:
局部变量如果有一个变量和成员变量一致,那么优先使用局部变量。
造成一个结果:
局部变量隐藏了成员变量。
为了解决这种情况,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);
}
1.作用:可以修饰成员变量和成员方法。
2.特点:
-随着类的加载而加载
-优先于对象而存在
-被类的所有对象共享
-可以通过类名调用
--非静态的:创建对象访问
--静态的:可以通过类名,也可以通过对象访问
例如:
饮水机:static
水杯:特有的内容
3.注意事项;
-static方法中没有this关键字,因为静态的内容通过累的加载而加载,this是随着对象的创建而存在。
-静态方法只能访问静态的成员。
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()
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);