JAVA一些基础类1

1.Object类
Java语言不同于C++语言,是一种单根继承结构语句,也就是说,Java中所有的类都有一个共同的祖先。这个祖先是Object类。
Object类有12个成员方法:
①构造函数
Object()

②hashCode和equale函数用来判断对象是否相同。
equale(Object obj) 判断其他对象和这个对象是否相等。
hashCode() 返回对象的哈希代码值 int类型

③toString()和getClass

getClass() 返回运行时的类名
toString() 返回该对象的字符串表达形式

④clone()
clone()函数的用途是用来存一个当权存在的对象。
使用clone()方法的步骤:
1.实现clone的类首先需要实现cloneable接口,Cloneable接口实质上是一个标识接口
2.在类中重写类中Object的clone()方法
3.在clone方法中调用super.clone。无论clone类的继承结构是什么,super会直接或者间接调用Object类的方法。
4.把浅复制的引用指向原型对象新的克隆体

⑤wait(),wait(long),wait(long,int)nottify()notifyAll()

wait()让当前线程等待直到另一个线程调用了此对象的notitf()或notityAll()方法。
wait(long millis)让当前线程等待直到另一个线程调用此对象的notity()或notityAll()方法,或者过去了一段时间。
wait(long millis,int nanos)让当前线程等待到另一个线程调用了此对象的notity()或notityAll()方法,或者其他某个线程中断线程,或者过去了一定的时间。
notity()唤醒在该对象的监视器上等待的单个线程
notityAll()唤醒在该对象的监视器等待的所有线程
⑥finalize()用于在垃圾回收。
这个函数在进行垃圾回收的时候会用到,匿名对象回收之前会调用到。



2.枚举类
public enmu 枚举类名称{
RED(1),
GREEN(2);
}
①枚举值都是public static final的,也就是常量,因此枚举中的枚举值应全部大写。
②枚举类型在枚举类中有构造方法和字段,但枚举的构造期有很大的不同
构造器只是在构造枚举值时被调用
构造器时私有的private,不允许有public构造器。



3.String类
String s="abc"
先到内存池中去找,如果没有找到就在内存池中创建
String s = new String("abc");
表示直接新建内存了
String类时final类,也就意味着String不能被继承,并且它的成员方法都认为final方法。在java中,被修饰的类是不允许继承的,并且该类中的成员方法都默认为final方法。
String类其实是通过char数据类保存字符串。
无论是sub操作,concat操作还是replace操作,都不是在原有字符串上进行的,而是重新生成一个新的字符串对象。也就是说,进行这些操作之后,最原始的字符串并没有改变。
总结:
String类初始化后是不可变。
引用变量与对象
创建字符串的方式
使用String不一定创建对象
使用new String 一定创建对象
interm()方法使用:一个初始为空的字符串池,它由类String独自维护。当调用intern方法时,如果池已经包含一个等于String对象的字符串,则返回池中的字符串,否则否则,将此String对象添加到池中,并返回此String对象的引用。当且仅当s.equals(t)为true.s.intern()==t.intern()才为true.
(1).String中使用 + 字符串连接符进行字符串连接时,连接操作最开始时如果都是字符串常量,编译后将尽可能多的直接将字符串常量连接起来,形成新的字符串常量参与后续连接(通过反编译工具jd-gui也可以方便的直接看出);
(2).接下来的字符串连接是从左向右依次进行,对于不同的字符串,首先以最左边的字符串为参数创建StringBuilder对象,然后依次对右边进行append操作,最后将StringBuilder对象通过toString()方法转换成String对象(注意:中间的多个字符串常量不会自动拼接)。
也就是说String c = "xx" + "yy " + a + "zz" + "mm" + b; 实质上的实现过程是: String c = new StringBuilder("xxyy ").append(a).append("zz").append("mm").append(b).toString();
由此得出结论:当使用+进行多个字符串连接时,实际上是产生了一个StringBuilder对象和一个String对象。

String、StringBuffer、StringBuilder的区别
(1)可变与不可变:String是不可变字符串对象,StringBuilder和StringBuffer是可变字符串对象(其内部的字符数组长度可变)。
(2)是否多线程安全:String中的对象是不可变的,也就可以理解为常量,显然线程安全。StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer 中的方法大都采用了synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是非线程安全的。
(3)String、StringBuilder、StringBuffer三者的执行效率:
StringBuilder > StringBuffer > String 当然这个是相对的,不一定在所有情况下都是这样。比如String str = "hello"+ "world"的效率就比 StringBuilder st  = new StringBuilder().append("hello").append("world")要高。因此,这三个类是各有利弊,应当根据不同的情况来进行选择使用:
当字符串相加操作或者改动较少的情况下,建议使用 String str="hello"这种形式;
当字符串相加操作较多的情况下,建议使用StringBuilder,如果采用了多线程,则使用StringBuffer。

方法: length()长度 capacity()容量 append(string str) 添加 reverse反转。

4.Date类(以及衍生相关信息)
构造方法:
Date() 分配Date对象并用当前时间初始化对象,以表示分配它的时间。
Date(long date) 分配Date对象并初始化对象,以表示自从标准基准时间以来的的指定毫秒数
方法摘要:
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when)测试此日期是否在指定日期之前。
Object clone() 返回此对象的副本。
int compareTo(Date anotherDate)比较两个日期的顺序
boolean equals(Object obj)比较两个日期的相等性
long getTime()返回自1970年1月1日以来的Date对象表示的毫秒数
int hashCode()返回此对象的哈希值码
void setTime(设置Date对象)以表示1970年1月1日GMT以后的time毫秒的时间点
String toString() 把Date对象转换成一下形式 dow mon dd hh mm ss zzz yyy
扩展:
SimpleDateFormat是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许惊喜格式化(日期--文本),分析(文本--日期)和规范化
构造方法:
public SimpleDateFormat()
public SimpleDateFormat(String pattern) pttern指的是格式。
常用方法:
public final String format(Date date) 将日期格式格式化
public Date parse(String source)将格式化日期文本格式转化成日期格式。
Calendar是个抽象类,是系统时间的抽象表示,它为特定瞬间的时间值。
注意:Calendar 的星期是从周日开始的。 常量值为0
Calendar 的月份值是从1开始的。 常量值为0
Calendar 的日期是从1开始的
实例化Cadlendar的三种方式
Calendar calendar = Calendar.getInstance();
Calendar calendar = new GregorianCalendar();
Calendar calendar = new GregorianCalendar(String pattern);
总结:JAVA中日期经常有以下5个方面:
1.创建日期
2.日期格式化显示
3.日期文本格式转化
4.日期中对年,月,日,时,分,秒,星期,月份的回去
5.日期的大小比较,日期的加减。

5.Arrays基础类的使用
Arrays .fill(arr,start,end,int) 数据填充从下标start到下标end(不包括)填充int的值
Arrays.sort(arr) 对数组进行排序
Arrays.equals(arr1,arr2)比较数组元素是否相等。比较的时元素,而不是地址
Arrays.binarySearch(arr,int) 用二分法查找指定元素的索引值 存在返回正数,不存在返回负数
Arrays.copeOf(arr.int)截取数组int个数,返回值为一个数组
Arrays.copeOfRange(arr,start,end)截取数组
Arrays.asList(arr).contains(value)查看数组中是否有指定的值。
6.Math类
Math类包含用于执行基本数学运算的方法,如绝对值,对数,平方根和三个函数,它是一个final类,其中定义一些常量和静态方法。
Math.abs(param) 绝对值 参数可为int long double,float
Math.ceil(param) 向上取整 参数为double
Math.floor(param) 向下取整
Math.max(param) 返回一组数的最大值
Matn.min(param) 返回一组数的最小值
Math.random() 返回一个随机值 0<=result<1
Math.rint(param) 返回四舍五入的值 返回值类型为double
Math.round(param) 返回四舍五入的值 返回值类型为int
当然不止这么点函数,根据实际用处,使用相应的函数。
三种产生随机数的方法
1.System.currentTimeMillis来获取当前时间戳看秒数long型数字
2.Math.random()返回一个数字
3.通过Random来产生一个随机数
生成实例 通过next一系列的函数获取随机值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值