常用类

内部类是在一个类内部再定义一个完整的类

内部类可以编译后生成独立字节码文件

内部类可以直接访问外部类的私有成员

内部类可以为外部类提供必要的内部功能组件

成员内部类(demo05)

在类内部定义,与属性和方法是同级别的类

在实例化内部类之前要先实例化外部类

一般定义为私有

外部类名.内部类名 名字=外部类对象.内部类对象

public static void main(String[] args) {
Outer outer=new Outer();
Outer.Inner inner=outer.new Inner();
inner.show();
}

是当内部类和外部类属性重名时,优先访问内部类属性

如果要访问其中外部内属性可以加上Outer.this

成员内部类中不能定义静态成员,但可以定义静态常量

静态内部类(demo06)

不依赖外部类对象,可以直接创建或直接用类名访问,可以声明静态成员

如果要在静态内部类中访问外部类属性需要在内部类中实例化外部内对象,然后调用。

静态内部类调用自己的静态成员和非静态成员可以直接调用

public class Outer {
private String name="cs";
private int age=23;
static class Inner{
private String address="sh";
private String phone="123";
private static int count=1000;
public void show(){
Outer outer=new Outer();
System.out.println(outer.name);
System.out.println(outer.age);
System.out.println(Inner.count);
System.out.println(address);
System.out.println(phone);
System.out.println(count);
}
}
}

局部内部类(demo07)

定义在外部类方法中,只能作用于当前方法

局部内部类前不能加任何修饰符

局部内部类无法直接访问当前方法中的局部变量,可将其定义为常量进行访问

在局部内部类中可以直接访问外部类和内部类的属性

如果要访问局部内部类中的方法必须在当前方法中实例化内部类对象再执行,否则使用外部类中包含内部类的方法时无法执行内部类中的方法。

public class Outer {
private String name="cs";
private int age=20;
public void show(){
String address="sz";
class Inner {
private String phone="1113250240";
private String email="151231541@qq.com";
public void show2(){
//访问外部类属性
System.out.println(name);
System.out.println(age);
System.out.println(phone);
System.out.println(email);
System.out.println();
//访问局部变量
System.out.println(address);//address为常量

}
}

Inner inner=new Inner();
inner.show2();
}
}

匿名内部类

必须继承一个父类或者实现一个接口

是定义类、实现类、实例化对象的语法合并,只能实例化一次。

public static void main(String[] args) {

/* UsbService usbService=new Mouse();
usbService.service();
//局部内部类
class Fan implements UsbService{
@Override
public void service() {
System.out.println("连接成功,风扇开始转动");

}
}*/
UsbService usbService=new UsbService() {
@Override
public void service() {
System.out.println("连接成功,风扇开始转动");
}
};
usbService.service();

}
匿名内部类在开发中的运用
匿名内部类实质上是实现了该接口或者继承了该父类的子类对象

Obeject类(demo09)

所用类的直接或间接父类,位于继承树顶层

Obeject类中定义的方法,是所有类都具备的方法。

getClass()方法可以返回引用中存储的实际对象类型.通常用于判断两个对象是否一致

hashCode()方法方法返回对象的哈希值

哈希值是根据对象的地址或者字符串或数字使用hash算法计算出来的int类型的数值

一般情况下相同对象返回相同哈希值

toString()方法

返回该对象的字符串表示

可将程序覆盖展示对象的各项属性

@Override
public String toString() {
return name+";"+age;
}

equals()方法

比较两个对象地址值是否相同

可将equals()方法覆盖比较各个属性值是否相同

@Override
public boolean equals(Object obj) {
//判断两个对象是否指向同一个地址
if(this==obj){
return true;
}
//判断obj是否为空
if(obj==null){
return false;
}
//判断两个引用指向的对象类型是否一致。还可用instanceof来判断
if(this.getClass()==obj.getClass()){
Students s=(Students) obj;
//比较属性
if(this.name.equals(s.getName())&&this.age==s.getAge())
return true;
}

return false;
}

finalize()方法

当对象被判定为垃圾对象时,由JVM自动调用此方法,用来标记对象,进行回收。

垃圾对象是指没有被有效引用指向的对象

垃圾回收:由GC销毁垃圾对象,释放存储空间。

使用System.gc()手动回收。

包装类

基本数据类型对应的引用数据类型

byte-Byte

short-Short

int-Integer

long-Long

double-Double

boolean-Boolean

char-Character

包装类的默认值为null

装箱是指将基本类型转化为引用数据类型

拆箱是指将引用类型中转化为基本类型

public class Demo10 {
public static void main(String[] args) {
//装箱
//基本类型
int num1=18;
//使用Integer包装类创建对象
Integer integer1=new Integer(num1);
Integer integer2=Integer.valueOf(num1);
//拆箱
Integer integer3= new Integer(100);
int num2=integer3.intValue();
//jdk1.5之后的自动装箱
int age=100;
Integer integer4=age;
//自动拆箱
int age2=integer4;
//基本类型转字符串
//使用加号
int n1=10;
String s1=n1+"";
//字符串类型转化为基本类型
//使用Integer中的toString方法
String s2=Integer.toString(n1);
String str="100";

//使用Integer中的parseXXX()方法
int num3=Integer.parseInt(str);


}
}
boolean字符串中只有"trur"会转化为true,其他都是false
java创建了(-128~127)共256个常用的整数包装类型对象。


String类

字符串一旦创建就不会改变
字符串面值存放在字符串池中,可以共享
常用方法
length();返回字符串长度
charAt(int index);根据下标获取字符
contains(str);判断字符中是否包含str
toCharArray();将字符串替换为数组
indexOf(str);查找str首次出现的位置
lastIndexOf(str);查找str最后出现的位置
trim();去掉字符串中前后的空格
toUpperCase();将小写转化成大写
toLowerCase();将大写转换成小写
endWith(str);判断字符串是否以str结尾
startWith(str);判断字符串是否以str开头
replace(abc,cba);用新的cba字符替换旧的abc字符
spit(,);以逗号为界拆分字符串
equals();判断字符串是否相等
可变长字符串
StringBuffer jdk1.0提供,效率慢,线程安全.
StringBuilder jdk5.0提供,效率快,线程不安全.
public class Demo11 {
public static void main(String[] args) {
//StringBuffer
StringBuffer sb=new StringBuffer();
//append();追加
sb.append("cs");
System.out.println(sb.toString());
sb.append("is zui shuai de ");
System.out.println(sb.toString());
//insert()添加
sb.insert(0,"hello");
System.out.println(sb.toString());
//replace();替换
sb.replace(0,1,"H");
System.out.println(sb.toString());
//delete();删除
sb.delete(0,4);
System.out.println(sb.toString());
}
}
StringBuilder 同
Calender类
修饰符是protected无法直接创建对象
getinstance(); 使用莫人时区和区域获取日历
set(); 设置 年 月 日 时 分 秒
get();返回设定日历的值
System类
arraycopy()复制数组
currentTimeMillis();获取当前系统时间,返回毫秒值
gc(); 启动垃圾回收器收垃圾
exit();退出jvm,返回0正常推迟,非0表示异常退出jvm

posted on 2022-09-19 23:20  zl子路  阅读(31)  评论(0)    收藏  举报