java周记四 (常用类)

常用类:

一.Object类:

	(1)public final Class getClass()方法:表示当前正在运行的类 (跟反射有关系!)
   返回值类型:Class (跟反射相关:)
   Class(java.lang.Class): (了解)正在运行字节码文件...
   Class类中有一个:getName():public String getName():以字符串展示字节码文件对象所表示实体
	(2)public String toString()方法
返回该对象的字符串表示(以一个文本格式体现出来的简明易于读懂的信息表达式),建议所有的子 重写Object类中toString(),否则就是地址值,没有意义!
	(3)public int hashCode()方法
 1)返回该对象的十进制的哈希码值(通过哈希表:后面Hastable(哈希算法...)),
 2)哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值(理解为地址值(不是实际意义的地址值))
 3)哈希码并不唯一,可保证相同对象返回相同哈希码,尽量保证不同对象返回不同哈希码
	(4)public boolean equals(Object obj)方法:表示其他对象当前obj对象是否 "相等"
   equals方法默认比较的是地址值是否相同,可进行覆盖,比较两个对象的内容是否一样 子类重写Object类中的equals方法时,通常有必要重写 hashCode方法:自动生成 alt+shift+s---h
   	重写equals方法的步骤:
​ 判断地址值相同
​ 依次判断传进来的对象是否为空
​ 判断两个类型是否同一个类型
​ 将Object---->向下转型Student
​ 判断两个类型中age(int) :比较值是否相同
​ 如果相同, 继续name(String类型),判断name的内容相同 (不相同,不成立)
​ 结果:true
	5).protected Object clone() throws CloneNotSupportedException
克隆方法:创建并返回此对象的一个副本,行特定的复制操作。
首先,如果此对象的类不能实现接口 Cloneable,则会抛出CloneNotSupportedException。
  
	6).protected void finalize()throws Throwable
 垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

 

二.scanner类

1.之前的使用:
1)导包
2)创建键盘录入对象:Scanner sc = new Scanner(System.in) ;
构造方法:
public Scanner(InputStream source)
形式参数:抽象类:java.io.InputStream:字节输入流(用来读取字节数),如果方法的形式参数是一个抽象类,那么需要传递该抽象类的子类对象
System.in:System:是jdk提供的一类
public static final InputStream in:成员变量 :标准输入流 
public static final PrintStream out:标准输出流
3.Scanner类中提供了一些判断功能:
1) public boolean hasNextXXX():判断当前是否是执行XXX类型(int,short,float,double...)
    public XXX nextXXX() :接收指定XXX类型
4.Scanenr:键盘录入的细节问题
先录入int类型,在录入String类型 (nextLine())
问题:当前字符串录入数据:值就被漏掉了,原因就是回车符号(本身字符串)
解决:在下一次录入String类型前,再次创建一个Scanner类型对象

三:String 类代表字符串

1.字符串是常量;它们的值在创建之后不能更改(常量的地址值)
2. String类是一个特殊的引用类型
String类型如果作为参数传递,形式参的改变不会影响实际参数 (跟基本类型作为参数的效果一样)
3.null 和""一样吗? null:对象为空 "":空字符序列 "" +任何数据
4.String类的构造方法
  public String():无参构造方法:创建一个字符串对象
  public String(byte[] bytes):使用平台的默认编码集 :将字节数组---->构造出String类型
  public String(byte[] bytes, int offset, int length):将字节数组的一部分转换成字符串
       	参数1:传递的实际字节数组对象
		参数2:从哪个位置开始
		参数3:指定长度
 public String(char[] value):将字符数组---构造成一个字符串对象
 public String(char[] value,int offset,int count) :将字符数组一部分转换成字符串
		参数1:传递的实际字符数组对象
		参数2:从哪个位置开始
		参数3:指定长度
 public String(String original):将一个字符串值存储进来,创建一个字符串对象
5.String类的常用方法:
1)equals()方法
	public boolean equals(String otherString) 
	在String类型中:equals:比较是字符串的内容是否相同(底层已经重写Object的equals方法)
2).String类型的判断功能
 public boolean equals(Object anObject):比较两个字符串内容是否相同
 public boolean equalsIgnoreCase(String anotherString):不区分大小写比较
 public boolean startsWith(String prefix):判断是否以指定的子串开头
 public boolean endsWith(String suffix):判断是否以指定的子串结尾
 public boolean isEmpty():判断字符串是否为空

3).String类的获取功能:
  int length():获取字符串长度
  public char charAt(int index):获取指定索引处的字符
  public String concat(String str):字符串拼接功能:使用当前字符串和指定str字符串进行拼接
  public int indexOf(int ch):获取指定字符在此字符串中第一次出现索引值
  public int indexOf(String str):获取指定字符串在此字符串中第一次出现索引值
4)String类的分割功能
  public String[] split(String regex):通过指定的字符串进行分割,返回值字符串数组
5)String类转换功能:
  public char[] toCharArray():将字符串转换成字符数组
  public byte[] getBytes() :将字符串----变成字节数组 (过程:编码)
  public static String valueOf(XXX xx):可以将任何类型的数据转换成String
  public String toUpperCase():将此字符串转换成大写
  public String toLowerCase():将此字符串转换成小写
6)String类的截取功能
     public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾
     public String substring(int beginIndex,int endIndex) 从指定位置开始截取,到指定位置结束,但是包含beginIndex,不包含endIndex索引(包前不包后)

7)替换功能
 public String replace(char oldChar,char newChar):将以前的字符用新的字符替换掉
 public String replace(String oldStr,char newStr):将以前的字符用新的字符替换掉

8)去除两端空格
 public String trim()
9)按照字段顺序比较! :如何比较的,如果第一和字符不相等第一个减第二个,若都相同,长度相减
   public int compareTo(String anotherString)

四.StringBuffe类

1.StringBuffer:线程安全的可变字符序列 ,提供字符串缓冲区
2.StringBuffer中的方法
1)两个获取功能
  int length():获取长度(缓冲区中字符数)
  public int capacity():获取缓冲区的容量大小
2) StringBuffer的构造方法:
  	public StringBuffer():空参构造,初始容量为 16 个字符。(默认的容量足够,不需要指定容量大小)
	public StringBuffer(String str):构造一个缓冲区,指定字符串内容到缓冲区中,容量大小等于16个+当前字符串的实际长度
	 public StringBuffer(int capacity):指定容量大小,构造一个缓冲区  
	注意事项:不能将String类型的值赋值给一个StringBuffer类型
3)StringBuffer****的添加功能:**
	public StringBuffer append(任何类型数据...):将任何类型的数据追加到缓冲区中(追加末尾)
	 public StringBuffer insert(int offset,String str/任何类型数据):将某个元素插入到指定位置
4)StringBuffer的删除功能
	public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回缓冲区本身
	public StringBuffer delete(int start,int end):删除从指定位置到指定位置结束(包前不包后,end-1位置)

5)关于:反转功能
public StringBuffer reverse():将缓冲区中的字符进行反转!
3.String <----> StringBuffer类型的相互转换
方式1:通过StringBuffer构造方法:StringBuffer(String str)
	StringBuffer sb = new StringBuffer(s) ;
方式2:StringBuffer()无参构造+append(String str):追加
   	StringBuffer sb2 = new StringBuffer() ;
 	sb2.append(s) ;
4StringBuffer----->String类型的相互转换**
StringBuffer buffer = new StringBuffer("hello") ;
方式1tring类型的构造方法
	String str = new String(buffer) ;
方式2 public String toString() 方法
	String str2 = buffer.toString() ;
面试题:

 1)StringBuffer和数组的区别?
   他们两者都属于引用类型,而且都是"容器"
	StringBuffer: 可变的字符序列 (长度可变的)里面可以存储任何数据类型----->都是以"字符"进行拼接 通过append追加,有length()方法
    数组: 长度固定,只能存储同一种类型的元素!是length属性
 2)StringBuffer和StringBuilder的区别?**
       共同点:两者之间互相兼容的,功能是相同(添加,构造方法,替换,删除,截取..)
	StringBuffer:可变的字符序列
			 线程角度:线程安全的--->同步的---->执行效率低!
	StringBuilder:可变的字符序列
			 线程角度:线程不安全的---->不同步的---->执行效率高
     在单线程程序中,StringBuilder去替换StringBuffer,因为效率高!  

 3)StringBuffer和String类型作为形式参数有什么区别:
两个都是引用类型
	String类作为形式参数,它的效果基本数据类型一样(String是最特殊的引用类型),String是一个常量,一旦被赋值,其值不能被改变
	StringBuffer/StringBuilder,他们作为形式参数, 形式参数的改变会直接影响实际参数(和其他引用类型效果一样)
4)字符串常量相加和字符串变量相加有什么区别? 
  1).字符串相加时如果含有字符串变量,则先在堆中开空间,再拼接,本质是new了StringBuilder对象进行append操作,拼接后调用toString()返回String对象。 
  2).字符串相加时不含字符串变量,是先加,然后在常量池找,如果有就直接返回,否则,就在常量池中创建一个字符串常量,不会用到StringBuilder。 

 

五:Integer类:

1.包含了int类型的值
1)public static String toBinaryString(int i):将整数值以"二进制"文本形式体现..
2) public static String toOctalString(int i)
3)public static String toHexString(int i)
2.成员变量(字段)
1) public static final int MIN_VALUE:最小值
2) public static final int MAX_VALUE:最大值
3.Integer类的构造方法
1)Integer(int value) :将int类型包装了Integer类型
2) Integer(String s) :将字符串内容包装Integer类型
注意事项:String是一个数字字符串,如果不是数字字符串,就出现NumberFormatException:数字格式化异常
3. Jdk5提供一些特性:自动拆装箱功能
   基本类型----引用类型: 自动装箱  int---->Integer
   引用类型---基本数据类型 : 自动拆箱 :Integer --int
eg: int------>String: Integer.toString(int i)
4. Integer 变量名 = 整数值直接赋值; ,实际执行一个Integer的.valueOf(整数值);
  valueOf方法里面提供了一个Integer的内部类:IntegerCache
public static Integer valueOf(int i) {
//先判断是否在这个i数据是否符合缓存区中的low:-128 high:127
   if (i >= IntegerCache.low && i <= IntegerCache.high)
     eturn IntegerCache.cache[i + (-IntegerCache.low)];
     //Integer[] cache;
 //如果不在这个超出了缓存区的直接重新堆内存中开辟空间
 return new Integer(i); 
   }

Eg: Integer i5 = 128 ;//Integer i5 = new Integer(128) ;
	Integer i6 = 128 ; //Integer i6 = new Integer(128) ;
	 System.out.println(i5==i6);
	System.out.println("---------------");
	 Integer i7 = 127 ; //在缓存区范围内:直接从缓冲区取数据
	Integer i8 = 127 ; //从缓存区中取数据
	 System.out.println(i7==i8);//true

六. Character:char类型的包装类类型

 1.构造方法
 public Character(char value)
2. 判断功能:
1)public static boolean isDigit(char ch):判断当前字符是否是数字字符
2)public static boolean isLowerCase(char ch):判断当前字符是否是小写字母字符
3) public static boolean isUpperCase(char ch):判断当前字符是否是大写字母字符

七.java.lang.Math:

1. Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

  public static double abs(double a/...):求某个数据的绝对值
  public static double ceil(double a):向上取整
  public static double floor(double a):向下取整
  public static int min(int a, int b):求两个int数据的最小值
  public static int max(int a,int b):求两个int数据的最大值
  public static double random():随机数[0.0,1.0) ---------> Java提供随机数生成器:Random类 nextInt(int n)
  public static int round(float a):四舍五入..
  public static long round(double a)
  public static double sqrt(double a):开根(一个正整数的平方根) 
  public static double pow(double a,double b):返回结果:a的b次幂
2. 静态导入(前提这些方法是静态的)
静态导入的格式:import static 包名.类名.方法名;
eg: import static java.lang.Math.abs;
    import static java.lang.Math.random;
使用静态导入的注意事项:
	如果当前类中出现了和导入的静态方法名一样,冲突了,在使用静态导入的这个的方法的时候**就必须带上限定(包名.类名)

八.:java.util.Calendar类:日历类

1.Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法 Calendar不能直接实例化
2.某一个类如果不能直接实例化:首先里面会存在一些静态功能,静态功能的返回值就是该类本身!public static Calendar getInstance()
public int get(int field):获取的日历字段的值!参数:传递日历字段
3.Calendar的成员方法:
 给日历字段添加或者减去时间偏移量
1)public abstract void add(int field,int amount)
   日历对象.add(Calendar.DATE,-5):当前日历时间的5天前
2) 设置当前年月日,日历时间public final void set(int year,int month, int date)
Eg:
public class CalendarDemo2 {
 public static void main(String[] args) {
  //创建日历类对象
  Calendar c = Calendar.getInstance() ;
    int year = c.get(Calendar.YEAR) ;
    int month = c.get(Calendar.MONTH) ;
    int date = c.get(Calendar.DATE) ;
    System.out.println(year+"-"+(month+1)+"-"+date);//2020-10-21当前日期时间
    System.out.println("--------------------------");
 //3年前的今天
   //public abstract void add(int field,int amount)
    c.add(Calendar.YEAR, -3);
    int year2 = c.get(Calendar.YEAR) ;
   System.out.println(year2+"-"+(month+1)+"-"+date);
   //5年后的10天前
   //对年设置偏移量,DATE设置偏移量
   c.add(Calendar.YEAR, 5);
     c.add(Calendar.DATE, -10);
    int year2 = c.get(Calendar.YEAR) ;
    int date2 = c.get(Calendar.DATE) ;
    System.out.println(year2+"-"+(month+1)+"-"+date2);
     System.out.println("----------------------------------");
   //public final void set(int year,int month, int date)
  c.set(2018, 4,12);
    int year3 = c.get(Calendar.YEAR) ;
    int month3 = c.get(Calendar.MONTH) ;
    int date3 = c.get(Calenda.DATE) ;
  System.out.println(year3+"-"+(month3+1)+"-"+date3);

  }

} 

九java.util.Date类

 特定的瞬间,精确到毫秒。
1.构造方法:
  public Date() 无参构造
2.成员方法:
 public long getTime() :返回1970 年 1 月 1 日所表示的时间毫秒 
3. String文本格式 和Date日期格式相互转换**
  1).java.text.DateFormat:可以将日期和文本相互转换 DateFormat继承自Format类:都是抽象类,不能直接实例化!,提供更具体的子类java.text.SimpleDateFormat extends DateFormat
  2).SimpleDateFormat的构造方法
    public SimpleDateFormat(String pattern):
     创建一个SimpleDateFormat对象
  3)参数:指定一个模式 要遵循一定的规则(jdk对它规定了)
  y年 ------2020  "yyyy"
  M年中月份----10/03  "MM"
  d月中的天数----05/21 'dd'
  h:表示上午/下午的小时数 hh
  H:一天中的小时数    HH
  m:分钟数         mm
  s:秒数       ss
  模式:"yyyy-MM-dd HH:mm:ss" 
 4)Date---->String
 格式化的步骤:
    		存在Date对象
			创建SimpleDateFormat(String pattern)
			public final String format(Date date):格式化方法
  5)String------>Date
  解析的步骤:
			存在String "日期文本"  "2020-10-21"
			创建SimpleDateFormat(String pattern)
			public Date parse(String source) throws ParseException
解析时SimpleDateFormat中的参数模式:必须和String 日期文本格式一致,否则出现解析异常(ParseException)

 Eg:public class DateDemo2 {
 public static void main(String[] args) throws ParseException {
//创建一个日期对象
Date date = new Date() ;
 System.out.println(date);//Wed Oct 21 14:10:48 CST 2020 Date格式
    //2)创建SimpleDateFormat:格式化的桥梁
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;//年-月-日
//3)格式化操作
  String dateStr = sdf.format(date) ;
   System.out.println(dateStr);
  System.out.println("------------------------");
   //日期文本
   String source = "2022-6-30 20:00:30" ;
 //String---->Date
//创建SimpleDateFormat对象
/必须和String 日期文本格式一致
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
  SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
//解析:抛出一个异常
   Date d = sdf2.parse(source) ;
  System.out.println(d);//Thu Jun 30 20:00:30 CST 2022

  }

}

十:System 类

包含一些有用的类字段和方法。它不能被实例化。
1. 字段:
public static final InputStream in :标准的"输入流"
public static final PrintStream out :标准的"输出流" 
2. 键盘录入: 
 Scanner(InputStream in) ---->Scanner(System.in)
3. 输出语句:
  System.out.println("xxx")----->System.out--->PrintStream ps (字节打印流)
   ps.println("x") : 字节打印流调用方法名println(String str)
4. 成员方法:
1).public static void gc() 运行垃圾回收器(手动开启)
  实际开发中,开发者不需要开启,运行垃圾回收器,它会调用Obejct类finalize(),回收没有更多引用的对象
2).public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  从原数组中的指定位置开始进行复制指定length长度复制到目标数组中的某个位置
        参数1:指定源数组
     	参数2:源数组中的某个位置
 		参数3:目标数组对象
 		参数4:目标数组对象中的某个位置
3) public static void exit(int status):参数状态为0:  表示正常终止jvm
 应用场景:模拟登录,注册操作(使用ArrayList)
System.exit(0) ;
4)public static long currentTimeMillis():**获取当前系统时间的毫秒值

十一.java.util.Random:随机数生成器

1.构造方法
  public Random() :(推荐),产生的随机数是变化的
  public Random(long seed):每次产生的随机数 是固定的! 
2. 成员方法:
 public int nextInt():获取的是int范围内的随机数
 public int nextInt(int n):获取0到n之间的随机数[0,n)
3. 获取随机数两种方式:
 Math类的random()方法: 返回值double类型
 Random类空参构造+nextInt(int n):获取随机数

十二:java.math.BigDecimal

描述:对浮点类型的数据进行精确计算的!
 1. 构造方法:
  public BigDecimal(String val) :字符串"数字字符串" 
 2. 成员方法:
1). public BigDecimal add(BigDecimal augend) :求和
2). public BigDecimal subtract(BigDecimal subtrahend):减法
3). public BigDecimal multiply(BigDecimal multiplicand):乘法
4).public BigDecimal divide(BigDecimal divisor)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值