java学习之内部类

常用类

内部类

在java类里面再创建一个完整的类,内部类包括成员、静态、局部、匿名内部类。

命名,中间加一个$符

特点:

  1. 编译之后可生成独立的字节码文件
  2. 内部类可一直接访问类的实例,,不破坏封装
  3. 可为外部类提供必要的内部功能组件

在类的内部定义,与实例变量,实例方法同级别的类

外部类的一个实例部分,创建内部内对象时,必须依赖外部对象

Outer out =  new Outer();

Outer.Inner in = oout.new Lnner();

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

内部类无法定义静态成员,可以使用静态常量。

静态内部类

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

只能直接访问外部类的静态成员(实例成员需要实例化外部类对象)

Outer.Innerinner = new Outer.Inner();

Outer.Inner.show();

局部内部类

定义在外部类方法中,作用范围和创建对象范围仅限于当前方法。

局部内部类访问外部类当前方法中局部变量时,因无法保障变量的声明周期与自身相同,变量必须修饰为final。

限制类的使用范围

匿名内部类

没有类名的局部内部类(一切特征都与局部内部类相同)

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

定义类,实现类,创建对象的语法合并,只能创建一个该类的对象

优点:减少代码量

缺点:可读性较差。

 

Object类

超类,基类,所有类的直接或间接父类,位于继承的最顶层。没有书写extends继承某个类时默认直接继承object类,否则为间接继承。

Object类型可以存储任何对象

getClass()方法

public final class<?> getClass(){} ,返回引用中存储的实际对象类型,应用:通常用于判断两个引用中实际存储对象类型是否一致。

HashCode()方法

Public int hashCode(){} 返回该对象的十进制的哈希码值,哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值,而且哈希码并不唯一,可保证相同对象返回相同的哈希码,尽量保证不同对象返回不同哈希码。(不同对象有可能出现一样的哈希码值)

ToString() 方法

Public String toString(){},返回该对象的字符串表示,可以根据程序需求覆盖该方法。

Equals()方法

Public boolean equals(Object obj) { }

默认实现为(this == obj),比较两个对象地址是否相同,可进行覆盖,比较两个对象的内容是否相同。

方法覆盖的步骤:在程序中可直接调用myeclipse自带的equals重写方法即可。

  1. 比较两个引用是否指向同一个类

if (this == obj)

      return true;

  1. 判断obj是否为null

if (obj == null)

       return false;

  1. 判断两个引用指向的实际对象类型是否一致

if (getClass() != obj.getClass())

       return false;

 

  1. 强制类型转换

TestTostring other = (TestTostring) obj;

  1. 一次比较各个属性值是否相同。

if (a != other.a// 值的属性是否相等

       return false;

    if (b == null) {

       if (other.b != null)

          return false;

    } else if (!b.equals(other.b))

    return false;

   return true;

Finalize()方法

垃圾回收的方法,当jvm的内存耗尽,一次性回收所有垃圾对象,也可使用System.gc()通知JVM执行法及回收

包装类

基本数据类型所对应的引用数据类型,Object可统一所有数据,包装类默认的值时null。

取值范围为-128 ~ 127时可直接指向;这时直接比较两个数值相等的对象时,答案为true.而其他范围内,需要重新创建对象,这时直接比较两个数值相等对象,是在比较两个对象的引用地址,这时答案为false。

 

String

字符串字面值时常量,创建之后不可以改变

常用创建方式:String str1 = “Hello”;String str2 = new String(“World”);

常用方法

可变字符串:可在内存中创建可变的缓冲空间,存储频繁改变的字符串。

常用方法:StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全。但是推荐使用。StringBuffer:可变字符串,JDK1.0提供,运行效率慢,线程安全。

 

BigDecimal类

运用在需要精确运算的场合

创建方式:BigDecimal bd = new BigDecimal(“1.0”); // JDK8可以免写““

方法:加减乘除

时间类型

Data

表示特定的瞬间,精确到毫秒

该类大部分方法已经被Calendar所取代

时间单位:

1秒 = 1000 毫秒; 1 毫秒 = 1000 微妙;1 微秒 = 1000 纳秒

Data函数从1900开始,实际月份要+1

Calendar

提供了获取或设置各种日历字段的方法

!!!!protected Calendar() 构造方法为protected修饰,无法直接创建该类对象。

SimpleDateFormat

是以语言环境有关的方式来格式化和解析日期的类

进行格式化(日期->文本)、解析(文本->日期)。

常用的时间模式字母

parse方法:将字符串类型(java.lang.String)解析为日期类型(java.util.Date)

format方法:将日期类型(Date)数据格式化为字符串(String)

System类

系统类,主要用于获取系统属性数据和其他操作。

//打印当前系统时间System.out.println(System.currentTimeMillis());

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值