java_常用类

java_常用类

内部类

概念:在一个类的内部在定义一个完整的类

特点:

​ 1、编译之后可分别生成独立的字节码文件

​ 2、内部类可直接访问外部类的私有成员,而不破坏封装

​ 3、可为外部类提供必要的内部功能组件

成员内部类

在类的内部定义和成员变量、成员方法同级别的类,即是成员内部类


class Outer{
  class Inner{
    public void method(){
      System out.println("内部成员方法");
    }
  }
}

先创建外部类对象,再借助外部类对象,进而创建成员内部类

public class Test{
  public static void main(String[] args){
    Outer out = new Outer();
    Outer.Inner in = out.new Inner();
    in.method();
  }
}

内部类可直接访问外部类的私有属性,而不破坏封装

②当外部类,内部类存在重名属性时,会优先访问内部类属性

③外部类类名.this:指向外部类当前实例对象

​ 外部类类名.this.属性名:访问外部类属性

④成员内部类不能定义静态成员(静态属性和静态方法)

静态内部类

静态内部类类似于静态属性;

​ 定义位置:类以内,方法以外,被static修饰

创建静态内部类中的静态成员,直接通过类名:

Outer.Inner i = new Outer.Inner();

访问静态内部类中的静态成员,直接通过类名:

Outer.Inner.静态内部类的静态成员;

局部内部类

局部内部类类似于局部变量:

​ ①定义位置:方法内部

​ ②局部内部类中可以直接访问外部类的私有属性

class Outer{
  private int a = 10;
  //外部类的成员方法
  public void outer_method(){
    int m = 1;
    //局部内部类
    class Inner{
      int n = 5;
      //局部内部类的成员方法
      public void inner_method(){
         System.out.println("a="+a);//a=10
      }
    }

    //创建局部内部类对象,只能在定义它的方法中
    Inner i = new Inner();
    System out.println("内部成员方法");
    i.inner_method();
  }
}

局部内部类访问外部类的局部变量时,要求局部变量必须加上final


(局部变量的生命周期和对象的生命周期不一致)

局部变量使用完立即回收,对象是自动回收机制


局部内部类访问外部类的局部变量

匿名内部类

概念:特殊的局部内部类(局部内部类的一切特征,匿名内部类都有)

语法:继承一个类或是实现一个接口

​ new 接口名 () { 实现接口的代码 } ;

创建对象:只会创建该类的一个对象

优点:减少代码量

缺点:可读性差

匿名内部类继承一个类或者实现一个接口;只创建该类的一个对象

equals(Object o)

“==”等号

如果等号两边都是基本数据类型则比较数值

如果等号两边都是引用类型则比较地址

覆盖equals(Object o)方法

​ 1、判断两个引用是否指向同一个对象

​ 2、 判断传入的引用是否为空

​ 3、判断两个引用的真是类型是否一致

​ 4、强制转换类型o

​ 5、依次比较属性值是否相等

​ 基本数据类型使用“==”比较

​ 引用类型使用String中的equals()进行比较

Object类

Object类:超类,根类,定义在java.lang包下,所有类的父类(直接或是间接)

Object类型的引用中可以存储任意类型的对象

Object中定义的方法所有类都具备

Object类中常用的方法

getClass():返回引用中存储的实际对象类型

​ 应用:通常用于判断两个引用中实际存储对象类型是否一致

hashCode():返回该对象的哈希码值(一般是通过将对象的内部地址转换成一个整数)

toString():返回该对象的String形式

​ 作用:未来方便打印输出对象的内容,可以覆盖toString()方法

​ toString()方法覆盖的原则:将所有属性的值拼接为一个字符串作为返回值

equals(Object obj):比较两个对象的内容是否相同,返回值布尔类型

finalize():垃圾回收器在回收垃圾对象时,调用的方法

垃圾回收器(GC)回收垃圾对象的时机:

​ ①自动回收机制:JVM内存耗尽,不能再为新创建的对象分配内存空间,一次性的收回所有的垃圾对象(自动的调用对象中的finalize方法)

​ ②使用System.gc(),通知JVM执行垃圾回收

包装类

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

引用类型的变量只能存储对象,8种基本数据类型不能直接存储在引用中,为了让Object统一管理所有类型的数据,Java提供包装类的概念

为8种数据类型分别定义了响应的对象类型,称之为包装类

基本数据类型 包装类型(对象类型)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

常用方法

常用数据类型之间的转换:

public class Test{
  public static void main(String[] args){
    //int 转 Integer
    Integer i1 = new Integer(10);
    Integer i2 = new Integer.valueOf(10);
    //Integer 转 int
    int a1 = i1.intValue();
    //String 转 Integer
    Integer i3 = new Integer("123");
    Integer i4 = new Integer.valueOf("123");
    //Integer 转 String
    String s1 = i4.toString();
    String s2 = i4+"";
    //int 转 String
    String s3 = a1+"";
    //String 转 int
    int a2 = Integer.parseInt("123");
    /*
注意:String转换成int时,要求String必须是数字字符串,否则抛出NumberFormatException数字格式异常
    */
  }
}
//Long、Integer类型进制形式输出
public class Test {
public static void main(String[] args) {
    int a = 12;
    System.out.println("16进制:"+Integer.toHexString(a));
    System.out.println("2进制:"+Integer.toBinaryString(a));
    System.out.println("8进制:"+Integer.toOctalString(a));
    }
}
//### 自动装箱、拆箱

//JDk5.0之后,提供自动装箱。拆箱的功能,及包装类型和基本数据类型自动转换

public class Test{
  public static void main(String[] args){
    /*
   将一个基本数据类型变为包装类型的过程称为自动装箱
    */
    Integer i =12;
     /*
    将一个包装类型变为基本数据类型的过程称为自动拆箱
    */
    int a = i;
  }
}

包装类可以区分0和null,即有效数据和无效数据

String类

创建String对象(两种方式不同)
创建String对象

不可变性

String字符串是常量,创建之后不可改变;

字符串字面值存储在串池中,可以共享


String 中的方法split(String str, int limit);

使用方法:

①当limit的值<0时,尽可能多的使用此规则进行分割字符串的操作。

②当limit的值=0时,尽可能多的使用此规则进行分割字符串的操作,但是当最后一个分割符后面没有字符时,抛弃此分隔符后的字符,不计数。

③当limit的值>0时,最多执行n-1此字符串的分割操作,执行完n-1次后,后面的字符技术一次。


### 可变长字符串

1、StringBuffer:可变长字符串,JDK1.0、线程安全,运行效率慢

2、StringBuilder:可变长字符串,JDK5.0,线程不安全,运行效率快
//buffer相当于一个序列,调用append()方法,可以向序列中追加字符串
StringBuffer buffer = new StringBuffer();
buffer.append("字符串");
StringBuilder 同理

BigDecimal

​ 位置:java.math包中

​ 作用:精确表示、计算浮点数

​ 创建BigDecimal对象。(方式很多)

​ 例:BigDecimal bd = new BigDecimal(“1.0”);

方法:

加、减、乘、除(具体方法参看API,java.math包中)

补充

除法:

divide(BigDecimal divisor, int scale, int roundingMode) ;

参数scale:指定精确到小数点后几位

参数roundingModel:指定小数部分的取舍模式,通常采用四舍五入的模式,取值为BigDecimal.ROUND_HALE_UP

猜你喜欢

转载自blog.csdn.net/qq_38928944/article/details/79763815