概念:
什么是封装?
隐藏现实细节,暴露出合适的访问方式。(合理隐藏、合理暴露)
封装的好处:
加强程序代码的安全性。
适当的封装可以提升开发效率,同时可以让程序更容易理解和维护。
封装的实现步骤:
一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。
提供public修饰的公开的getter、setter方法暴露其取值和赋值。
String概述
java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
java程序中所有的字符串文字(例如“abc“)都为此类对象。
String类的特点详解
String是什么,可以做什么?
字符串类型, 可以定义字符串变量指向字符串对象。
String是不可变字符串的原因?
string变量每次的修改其实都是产生并指向了新的字符串对象。
原来的字符串对象都是没有改变的,所以称为不可变字符串。
创建字符串对象的2种方式:
方式1:直接使用“”定义(推荐方式)
方式2:通过String类的构造器创建对象
有什么区别吗?
以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
字符串的内容比较:
使用equals比较,只比较内容即可;== 比较的是内容和储存的存储地址。
String类方法
获取字符串长度 int length();
获取特定位置的字符 char charAt(int index);
获取特定字符的位置 int indexOf(char ch);
int indexOf(String str);
获取指定字符最后一个的位置 int lastIndexOf(char ch);
字符串的拼接 concat();
将字符数组转为字符串
String(char[] chs);
String(char[] chs, int offset, int count)
static String valueOf(char[] chs);
将字符串转为字符数组
char[] toCharArray();
字符串替换
String replace(char oldChar, char newChar);
String replaceAll(String old, String new);
切割字符串
String[] split(String regex);
截取字符串
String subString(int beginIndex);
String subString(int beginIndex, int endIndex); 要头不要尾
将小写字母转为大写字母
String toUpperCase();
将大写字母转为小写字母
String toLowerCase();
去除收尾空格的
String trim();
static关键字的作用:
static是静态的意思,可以修饰成员变量,表示该成员变量只在内存中存储一份,可以被共享访问、修改。
static修饰成员变量可以分为2类:
静态成员变量(有static修饰,属于类,内存中加载一次):常表示如在线人数信息、需要被共享的信息,可以被访问。
访问方式:类名.静态成员变量 //静态成员变量 public static String onlineNumber = 160;
实例成员变量(无static修饰,存在于每个对象中):常表示姓名name、年龄age等属于每个对象的信息。
访问方式:对象.实例成员变量
static修饰成员方法的基本用法:
静态成员方法(有static修饰,属于类),建议用类名访问,也可以用对象访问
实例成员方法(有static修饰的,属于对象),只能对象触发访问。
使用场景:
表示对象自己行为的,且方法中需要访问实力成员的,则该方法必须申明成实例方法。
如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法。
总结:
作用:
1.static修饰成员变量
语法格式:
static int age;//静态变量
注意事项:
1.使用static修饰成员变量的时候在调用静态的成员变量的时候 :类名.静态的变量名 不需要借助于对象,早于对象的创建。和对象没有关系。
2.代码中没有创建对象的时候,static修饰的变量已经被加载进来了。
3.分析内存:只要是static修饰的变量,都在.class文件编译阶段就已经加载到内存的方法区了。
2.static 修饰成员方法
语法格式:
public static void/数据类型 方法名字(){
}
注意事项:
1.静态的成员方法和对象无关,直接使用类名直接调用
2.静态的成员方法会随着.class文件的加载而加载,也会被加载到方法区。早于对象的创建。
3.静态方法不能被重写
4.静态方法中能不能使用非静态的成员属性和成员方法?
静态的成员方法早于对象的创建,普通的成员属性和成员方法只能是对象创建好以后才能进行调用的
5.静态方法中能不能创建对象?能!!!
3.static修饰代码块【静态代码块】
static {
代码
}
类文件只加载,静态代码块就会被加载
执行顺序 静态代码块-----》构造代码块----------》构造方法
面试题:为什么静态代码块优先于构造代码块和构造方法执行?
因为构造代码块和构造方法在实例化对象的时候才真正的执行
静态代码块和对象没有关系,是在.class被加载以后就立马执行的,早于对象的创建。
代码块的概述
代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类),定义在类中方法外。
在Java类下,使用{}括起来的代码被称为代码块
代码块分为:
静态代码块:
格式:static
特点:需要通过static修饰,随着类的加载而加载,并自动触发一次,优先执行。
作用:可以在程序加载时进行静态数据的初始化操作(准备内容)
使用场景:在类加载的时候做一些静态数据初始化操作,以便后续使用。
构造代码块(了解,用得少):
格式: { }
特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并在构造器执行前执行
使用场景:初始化实例资源