Java 8 内部类和常用类

内部类与常用类

目录:

  1. 内部类
  2. object类
  3. object类常用方法
  4. 包装类
  5. String类
  6. BigDecimal类

内部类

分为:成员内部类,静态内部类,局部内部类,匿名内部类

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

特点:
编译之后可生成独立的字节码文件
内部类可直接访问外币类的私有成员,而不破坏封装
可为外部类提供必要的内部功能组件

成员内部类:
在类的内部定义,与实例变量、实例方法同级别的类
外部类的一个实例部分,创建内部类对象时候,必须依赖外部类对象

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


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

Object类:
超类、基类,所有类的直接或间接父类,位于继承树的最顶层
任何类,如没有书写extends显示继承某个类,都默认直接继承object类,否则为间接继承
object类中所定义的方法,是所有对象都具备的方法
object类型可以存储任何对象
作为参数,可接受任何对象
作为返回值,可返回任何对象

getClass()方法:
public final Class<?> getClass(){}

返回引用中存储的实际对象类型

应用:通常用于判断两个引用中实际存储对象类型是否一致
public Static void main(String args){
	Student s1 = new Student("aaa",20);
	Student s2 = new Student("bbb",22);
	//判断s1和s2是否一个类型
	Class class1 = s1.getClass();
	Class class2 = s2.getClass();
	if(class1 == class2){
		System.out.println("S1和s2是一个类型");
	}else{
	System.out.println("S1和s2不属于同一个类型");
}

}

hashCode()方法
public int HashCode(){}

返回该对象的哈希码值

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

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

toString()方法
public String toString(){}

返回该对象的字符串表示(表现形式)

可以根据程序需求覆盖该方法。如:展示对象各个属性值

equals()方法
public boolean equals(Object obj){}

默认实现为(this==obj),比较两个对象地址是否相同

可进行覆盖,比较两个对象的内容是否相同

覆盖步骤:
比较两个引用是否指向同一个对象
判断obj是否为null
判断两个引用指向的实际对象类型是否一致
强制类型转换
依次比较各个属性值是否相同

finalize()方法:
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾进入回收队列
垃圾对象:没有有效引用指向此对象时,为垃圾对象
垃圾回收:由GC销毁垃圾对象,释放数据存储空间
自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
手动回收机制:使用System.gc():通知JVM执行垃圾回收

装箱:基本类型转换成引用类型的过程
int num1 =18;
Integer interger1=new Integer(num1);
Interger interger2=Integer.valueof(num1);

拆箱:引用类型转成基本类型
Integer integer3 = new Integer(100);
int num2=integer3.intValue();

jdk1.5之后,提供了自动装箱和拆卸
int age=30; Integer integer4=age;//装箱
int age2=integer4;//拆箱

基本类型和字符串之间转换
int n1=255;
String s1=n1+"";
String s2 =Integer.toString(n1,16);

Integer integer1=100;
integer integer2=100
integer1==integer2 //true

Integer integer3=200;
integer integer4=200
integer1==integer2 //false
因为integer有个缓冲区,范围是[-128,127];

//字符串转换基本类型
String str=“150”;
Integer.pasreInt(str);

//boolean字符串形式转成基本类型 “true”—>
String str2=“true”;
boolean b1=Boolean.parseBoolean(str2);

String类

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

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

String name=“hello”//hello常量存储在字符串池中
name=“zhangsan”//zhangsan赋值给name变量,给字符串赋值时,并没有改变数据,而实重新开辟了一个空间

常用方法:
public int length//长度
public char charAt(int index):根据下标获取字符
public boolean contains(String str):判断当前字符串中是否包含str

//例子
Sting content=“java是世界上最好的语言”
System.out.println(content.length())
System.out.println(content.charAt(content.length()-1))
System.out.println(content.contains(“java”))
System.out.println(content.contains(“php”));

public char[] toCharArray():将字符串转换成数组
public int indexOf(String str):查找字符串在当前字符串中出现的下标索引
public int LastindexOf(String str):查找字符串在当前字符串中出现的下标索引

public String trim():去掉字符串前后的空格
public String toUpperCase():将小写转成大写
//toLowerCase()将大写转成小写
public boolean endWith(String str):判断字符串是否以str结尾

public boolean replace(char oldChar,char newChar):将就字符串替换成新字符串

public String[] split(String str):根据str字符串进行拆分

可变字符串Stringbuffer和StringBuilder

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

StringBuilder:可变长字符串,jdk5.0提供,运行效率快、线程不安全

StringBuffer:
append();//追加
insert();//添加 (可以在某一个位置添加)
replace:替换 可以换位置
delete();删除

BigDecimal

位置:java.math
作用:精确计算浮点数

subtract减法 add加法 multiply乘法 divide除法

new BigDecimal(“1.4”)
.subtract(new BigDecimal(“0.5”))
.divide(new BigDecimal(“0.9”));

(1.4-0.5)/0.9

除法:divide(BigDecimal bd,int scal,RoundingMode mode)

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

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

Date类

Date表示特定的瞬间。Date类大部分方法都已经被Calendar类方法取代

时间单位:
1秒=1000毫秒
1毫秒=1000微秒

Calendar类

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

构造方法
protected Calendar():由于修饰符是protected,所以无法直接创建该对象
其他方法
static Calendar getInstance():使用默认时区和区域获取日历
void set(int year,int month,int date,int hourofday,int minute,int second):设置日历的年、月、日、时、分、秒
int get(int field):返回给定日历字段的值。字段比如年、月、日
void setTime(Date date):用给定的Date设置此日历的时间。Date-Calendat
Date getTime():返回一个Date表示此日历的时间 Calendar-Date
void add(int field,int amount):按照日历的规则,给指定字段添加或减少时间量
long getTimeInMillies():毫秒为单位返回该日历的时间值

calendar.year//年
calendar.month//月
calendar.day_of_month//日
calendar.hour_of_day//小时 十二小时制
calendar.minute //分钟
calendar.second//秒

SimpleDateFormat

是一个与语言环境有关的方式来格式化和解析日期的具体类
进行格式化(日期->文本)、解析(文本 ->日期)
常用的时间模式字母
y 年 2019
M 月份 08
d 月中天数 10
H 一天中小时数 22
m 分钟 16
s 秒 59
S 毫秒 367

Simp;eDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

Date date = new Date();
String str =sdf.format(date);

//解析(把字符串转成日期)
sdf.parse(“2008-4-7”)

System类

系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。

static void arraycopu //复制数组
static long currentTimeMills() //获取当前系统时间,返回的是毫秒值
static void gc();//建议jvm赶快启动垃圾回收器回收垃圾
static void exit(int status):推出jvm,如果参数是0表示正常退出jvm,非0表示异常退出jvm

//arraycopy  数组的复制
//src:源数组
//srcPos:从哪个位置开始复制
//dest:目标数组
//destPos  目标数组的位置
//length:复制的长度
int[] arr ={20,18,15,8,35,26,45,90};
int[] dest=new int[8];
System.arraycopy(arr,4,dest,4,4);
for(int i=0;i<dest.length;i++){
	System.out.println(dest[i]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值