内部类
概述,在一个类里面再定义一个类,这个类称为内部类,外部的类称为外部类
分类,成员内部类,局部内部类
成员内部类
调用方法:
方式一:通过外部类的方法,创建内部类对象
方式二:第三方创建内部类对象------Outer.Inner oi = new Outer().new Inner();
修饰符
private:只能在自己所在的外部类中创建对象访问
static:静态成员内部类访问格式:
外部类名.内部类名 对象名= new 外部类名.内部类名();
静态成员内部类中的静态方法:
外部类名.内部类名.方法名();
局部内部类
定义,在方法中定义的类,外界无法直接使用,需要在方法内部创建对象并使用,该类可以直接访问外部类的成员,也可以访问方法内的局部变量.这个类,只希望给外部类内部使用,不希望其他类直接使用,就可以声明为内部类,且经常使用private修饰
匿名内部类
概述,本质上是特殊的局部内部类(定义在方法内部),格式前提:需要存在一个接口/抽象类/具体类
格式
new 类|抽象类名|接口名(){
重写方法
};
new Inter(){
public void show(){
}
};
理解:创建了接口的实现类对象/抽象类的子类对象/具体类的子类对象
做了3件事:定义了实现类,重写方法,创建了实现类对象
写一个多态的步骤
定义一个接口
定义实现类实现接口,重写方法
在测试类中,创建一个方法useXXX(接口类型 变量名){...}
在main中调用方法,传入实现类对象
何时使用匿名内部类
实现类只使用一次,推荐匿名
方法重写代码复杂,建议创建实现类
常用API
Object
一个类要么默认继承Obj类,要么间接继承Obj(祖宗类)
toString()
返回当前对象在堆内存中的地址信息,类的全限名@内存地址
直接打印对象就是打印这个对象的toString方法返回值
我们自己定义类,一般会对toString方法重写
方法存在意义:为了让子类重写,以便返回对象的内容信息
equals()
比较当前对象与另一个对象的地址是否相同,相同返回true
方法存在意义:让子类重写,以便子类自己定制比较的规则
默认比较两个对象的地址值是否相同
==用于引用类型,比较地址值,用于基本类型,比较的是数据值
equals默认比较地址值,重写后用于比较对象的成员变量值
System
功能是通用的,也是一个工具类
public static void exit(int status)------终止当前运行的jvm,非零表示异常终止
public static void currentTimeMillis()------返回当前系统的时间毫秒值形式
Math
数学工具类,包含对数学运算的方法.帮助文档中,没有看到构造方法,因为成员都用static修饰了,可以用类名直接访问
常用方法
public static int abs (int a)
获取参数绝对值
public static int round (float a)
四舍五入
public static int max (int a,int b)
获取两个int中的较大值
public static double pow (double a,double b)
返回a的b次幂的值
基本类型包装类
Byte,Short,Interger,Long,Character,Float,Double,Boolean
基本类型不能拥有属性和方法,java为实现一切皆对象,为基本类型提供对应引用类型
集合的泛型只能支持包装类型,不支持基本数据类型
系统可以在包装类中,提供有用的方法,便于操作该基本类型(Interger类有方法将String转为int)
常见构造方法
public static Integer valueOf(int i)
返回表示指定的int值的Interger实例
public static Integer valueOf(String s)
返回一个保存指定值的Integer对象String
装箱和拆箱
装箱,把基本数据类型转换为对应的包装类类型
拆箱,把包装类类型转换为对应的基本数据类型
常用方法
static int parseInt(String str)------解析参数字符串,返回一个int数
包装类最常见操作:基本类型与字符串转换
1.int转String
方式一:加双引号即可 int+""
方式二:public static String valueOf(int i):返回int参数的字符串表示形式
2.String转int
public static int parseInt(String s):将字符串解析为int 类型
常见算法
选择排序
每轮选择当前位置,开始找出后面的较小值与该位置交换
二分法
在数据量特别大的时候,基本查找从前往后寻找的性能很差
二分查找的前提是必须排好序的数据
Arrays数组工具类
数组操作工具,专门用于操作数组元素
常见API
public static String toString(类型[] a)
返回数组的字符串表现形式,用来打印数组内容
public static void sort(类型[] a)
对数组进行默认升序排序
public static int binarySearch(类型[] a,int key)
二分搜索数组中的数据索引,存在返回索引,不存在返回负数
日期与时间
Date
Date的构造器
public Date()
创建一个Date对象,代表的是系统当前此刻日期时间
public Date(long time)
把时间毫秒值转换成Date日期对象
Date的常用方法
public long getTime()
获取时间对象的毫秒值
public void setTime(long time)
设置日期对象的时间为当前时间毫秒值对应的时间
SimpleDateFormat
作用,可以把Date对象格式化成我们喜欢的字符串形式,可以把字符串的时间形式 解析成Date对象
构造器
public SimpleDateFormat()
使用的是默认格式,不符合国人阅读习惯
public SimpleDateFormat(String pattern)
使用指定格式
如"yyyy年MM月dd日 HH时mm分ss秒"
public final String format(Date date)
将Date对象格式化成日期/时间字符串
public parse(String source)
从给定字符串的开始解析文本以生成日期
Calendar
代表系统此刻日期对应的日历对象,它方便对日期进行计算和获取年月日,Calendar是一个抽象类,不能直接创建对象
创建Calendar对象
public static Calendar getInstance()
获取当前日历对象
Calendar常用方法
public int get(int field)
取日期中某个字段信息
public void set(int field,int value)
修改日历的某个字段信息
public void add(int field,int amount)
为某个字段增加/减少指定的值
public final Date getTime()
拿到此刻的日期对象
public long getTimeInMillis()
拿到此刻时间毫秒值
注意:Calendar是可变的日期对象,一旦修改后其对象本身表示的时间将会变化
Calendar规则中,月份从数字0开始,0代表1月
BigDecimal
作用,用于解决浮点型运算精度失真的问题
获取BigDecimal对象
构造方法:BigDecimal(String val)
静态方法:static BigDecimal valueOf(double val)
常用成员方法
public BigDecimal add(BigDecimal b)
加法
public BigDecimal subtract(BigDecimal b)
减法
public BigDecimal multiply(BigDecimal b)
乘法
public BigDecimal divide(BigDecimal b)
除法
public BigDecimal divide(BigDecimal b,精确几位,舍入模式)
除法
Lambda表达式
lambda概述
函数式思想的体现:强调做什么,而不是以什么形式做
lambda格式
(形式参数)->(代码块)
形式参数,如果有多个参数,用逗号隔开,没有参数留空即可
-> 英文画线和大于符号组成,固定写法,代表指向动作
代码块,具体要做的事,也就是方法体内容
lambda的使用前提:
1.有一个接口
2.接口中有且只有一个抽象方法
lambda省略规则
1.参数类型可以省略,但是有多个参数,不能只省略一个
2.如果参数有且仅有一个,小括号可以省略
3.如果方法体只有一条语句,可以省略大括号和分号,甚至return,要省就全部省,不能省略一部分
写一个多态接口的步骤
1.写一个接口
2.在测试类创建一个方法useXXX(),参数类型是接口类型
3.在main方法调用方法,传入匿名内部类/lambda
标签:进阶,int,方法,javaEE,对象,static,小结,public,BigDecimal From: https://www.cnblogs.com/kyrie-66/p/17297882.html