Java常用类:内部类,Object类,包装类,String,BigDecimal类,时间类型

一、内部类

内部类包含:(1)成员内部类 (2)静态内部类 (3)局部内部类 (4)匿名内部类

什么是内部类?
1、编译之后可以生成独立的字节码文件。
2、内部类可以直接访问外部类成员,而不破坏封装。
3、可为外部类提供必要的内部功能组件。

1、成员内部类

(1)在类的内部定义的类。与实例变量和实例方法同级别。
(2)外部类一个实例部分,创建内部类对象时,必须依赖外部类对象。
		Outet out = new Outer();
		Outer.Inner  in=  out.new Inner( );
(3)当外部类属性和内部类属性重名时,优先访问内部类属性。
(4)成员内部类不能定义静态成员。
//成员内部类的基本格式 就是
class Outside{
	private String name = "张三";
	private int age=15;
	 
	//成员内部类
	class Inside{
		private String phone = "123";
		private int age;
		public void show() {
			//使用内部类属性
			System.out.println(phone);
			
			//使用外部类属性
			System.out.println(name);
			//访问同名属性格式,外部类名.this.属性名
			System.out.println(Outside.this.age);
		}
	}
}

2、静态内部类

(1)不需要依赖外部对象,可以直接创建和通过类名访问。
(因为static的全局性)可以声明静态成员。
		sInside is = new Inside();
(2)只能访问外部类的静态成员(实例成员需要实例化外部类对象)。
		Outer.Inner in = new Outer.Inner( );

3、局部内部类

(1)定义在外部类方法中,作用范围和创建对象范围仅限于当前方法。
(2)局部内部类访问外部类当前方法中的局部变量的时候,因为无法保障变量生命周期,所以,变量必须修饰为Final。
(3)限制类的使用范围。
class Outer4{
	private String name= "刘德华";
	private int age =35;
	
	public void show(final int i) {
		// TODO Auto-generated method stub
		String address = "深圳";
		//这里address 默认为final 属性
		class Inner{
			private String phone ="8888888";
			private String email = "liudehua@qq.com";
			
			public void show2() {
				//访问外部类的属性
				System.out.println(Outer4.this.name);
				//访问内部类的属性收
				System.out.println(Outer4.this.age);
				System.out.println(this.phone);
				System.out.println(this.email);
			}
		}
		Inner inner = new Inner();
		inner.show2();
	}
}

4、匿名内部类

(1)没有类名的局部内部类。
(2)必须继承一个父类或者实现一个接口。
(3)定义类,实现类、创建对象的语法合并。只能创建一个该类的对象。
	优点:减少代码量。
	缺点:可读性较差。
public interface Usb {
	//服务
	void service();
}

//使用匿名内部类优化(相当于创建了一个局部内部类)
		Usb usb=new Usb() {	
			@Override
			public void service() {
				System.out.println("连接电脑成功了....");s
			}
		};

二、Object类

所有类的直接或间接父类。Object类中所有的方法,其他类都可以使用。

Get class():返回引用中存储的实际数据类型,一般用来比较两个引用中存储的对象类型是否一致。
	Class class1=s1.getClass();
	Class class2=s2.getClass();
	if(class1==class2) {
		System.out.println("s1和s2属于同一个类型");
	}else {
		System.out.println("s1和s2不属于同一个类型");
	}
hashcode()方法:返回该对象的十进制哈希码值。哈希算法根据对象的地址或字符串和数据计算出来的int类型的数值。哈希码的数值并不唯一,只能保证同一返回相同的哈希码,尽量保证不同对象返回不同哈希码(因为取值高位原则)。
toString()方法:返回该对象的字符串表示。在许多方法中可以重写
	toString()方法,以保证测试结果。
euqals( )方法:Object类中比较的是地址的值。在String 字符串中比较
的是值,因为String实现了重写。
	重写equals( )方法,实现值比较的步骤。
@Override
public boolean equals(Object obj) {
	//1判断两个对象是否是同一个引用
	if(this==obj) {
		return true;
	}
	//2判断obj是否null
	if(obj==null) {
		return false;
	}
	//3判断是否是同一个类型
	//intanceof 判断对象是否是某种类型
	if(obj instanceof Student) {
		//4强制类型转换
		Student s=(Student)obj;
		//5比较熟悉
		if(this.name.equals(s.getName())
			&&this.age==s.getAge()) {
			return true;
		}
	}
	return false;
}

三、包装类
概念:基本数据类型对应的引用数据类型。默认值都是null。
类型转换方法:(1)parseXXX (2)Integer . valueof()。

整数缓冲区,已经创建了-128~127的256个数值。超过这个范围的每声明一次就重新开辟空间。

Integer i1 = 1;
Integer i2 = 1;
Integer i3 = 200;
Integer i4 = 200;

System.out.println(i1 = i2);//true
System.out.println(i3 = i4);//false
所有包装类中的比对也是用equals来比对。
包装类的数值比对,有一方是基础数据类型,另一方的包装类会进行自动拆箱转为基础数据类型进行比对	

四、String类

String,是一个常量值,创建之后就不可以进行改变。一些基本的常用方法如下:
//根据下标获取字符
public char charAt(int Index)
//判断当前字符是否包含str
public boolean contains(String str)
//将字符串转换成数组
public char[] toCharArray()
//判断首次出现str的位置,存在返回下标志,不存在返回-1
public int indexOf(String str)
//去掉字符串前后空格,中间的去不掉
public String trim()
//根据str拆分字符串,返回的是数组类型
public String[] split()

可变字符串
概念:可在内存中创建可变的缓存空间,存储频繁改变的字符串。
若字符串不需要频繁变动,还是建议使用Striing存储。
StringBuilder和StingBuffer的区别

区别1:线程安全
	StringBuilder线程是不安全的,在所有公开方法中没有加同步锁,
    StringBuffer是线程安全的,在所有公开方法中都使用了同步锁。
区别2:缓冲区
	Buffer每次获取字符串都会使用缓冲区的toStringCache来构造一个字符串。
	Builder每次都复制一次字符数组,再构造一个字符串。

BigDecimal
在应用中需要准确的数值计算方式,使用BigDecimal.

创建方式:BigDecimal bd = new BigDecimal(" 1.0 ");
加:bd1.add(bd2);
减:bd1.subtract(bd2);
乘:bd1.multipy(bd2);
除:bd1.deivide(bd2);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值