Java常用类

目录

包装类

数据类型转换

​编辑

自动拆箱与自动装箱

常用类

Random

Scanner

System

Arrays

Object

字符串相关

不可变字符串:String

可变字符串:StringBuffer,StringBuilder

BigDecimal

时间相关

Date

​编辑

Calendar

SimpleDateFormat


包装类

概念:八个基本数据类型对应的引用数据类型

byte                        Byte

short                        Short

int                           Integer

long                        Long

float                        Float

double                    Double

char                        character

boolean                  Boolean

数据类型转换

将字符串转为整数

                int 转换后的数字 = Integer.parseInt(字符串);

将字符串转换为小数

                double 转换后的数字 =Double.parseDouble(字符串);

将字符串转换为布尔

                boolean变量名=Boolean.parseBoolean(字符串);

将各种类型转换为字符串

                String 变量名 =""+要转换的数据;

	int a2=Integer.parseInt("74683");
		System.out.println(a2);//将字符串转为数字a1
		
		double b2=Double.parseDouble("114.514");
		System.out.println(b2);//将字符串转为小数
		
		boolean c2=Boolean.parseBoolean("true");
		boolean d2=Boolean.parseBoolean("TRUE");//只要被转化的字符串不为true(不区分大小写)都会被boolean转为false
		boolean c3=Boolean.parseBoolean("34");
		System.out.println(c2);
		System.out.println(d2);
		System.out.println(c3);
		
		String string=""+12345;//""+  

自动拆箱与自动装箱

自动拆箱:

                将基本数据类型的包装类对象转换为基本数据类型

自动拆箱:

                将基本数据类型再转换为对应的包装类对象

                数字缓冲区:-128~127

常用类

Random

随机数

常用方法:

                nextInt(最大值)

                newBoolean()

package test;

import java.util.Random;

public class Test1 {
	
	public static void main(String[] args) {
		Random nebe=new Random();
		int a1=nebe.nextInt(89);//此时随字数范围为[0,89)
		
		System.out.println(a1);
		
		
		Random bueR=new Random();
		boolean b1=bueR.nextBoolean();//此时为随机true或false
		
		System.out.println(b1);
	}

}

Scanner

键盘录入

常用方法:

                next()  //输入字符类型

                nextInt()  //输入整形类型

                nextLong()  //

                nextBoolean()  //输入布尔类型

                

Scanner d1=new Scanner(System.in);
		String e1=d1.next();
		
		System.out.println(e1);

System

提供静态属性:

in:输入

out:输出

err:错误输出

Scanner d1=new Scanner(System.in);//System在此提供静态属性输入
		String e1=d1.next();
		
		System.out.println(e1);//输出
		System.err.println(e1);//错误输出

  

提供的静态方法:

arrayCopy(原数组,拷贝开始位置,目标数组,复制开始位置,拷贝数据长度);

	int []arr=new int[] {3,4,5,6,7,8,9};
		int []arr2=new int[6] ;
		
		System.arraycopy(arr, 0, arr2, 3, 2);

		//原数组为arr,从它的第0个下标开始,复制到arr2中,从arr2的第三个下标开始,复制两个长度		
		

currentTimeMillis():获取当前系统时间距离1970年1月1日00:00:00(格林威治时间)的时间差单位 ms

gc():手动调用垃圾回收机制

exit(int starts):退出当前程序,0正常退出,其他非正常退出

Arrays

数组操作工具

提供的静态方法:

        sort():排序

int []arr4=new int[] {43,455,5,444,5,9,5,3,4,5};
		Arrays.parallelSort(arr4);
		
		for (int i : arr4) {
			System.out.println(i);
		}
		

        toString(数组):将数组转换为特定格式的字符串

	System.out.println(Arrays.toString(arr4));

Object

所有类的父类

                1.所有类的对象都可以转换为Object类的对象

                2.Object提供的方法是所有对象都有的方法

提供的方法:

        getClass():获取类的对象,之后反射会说

        hashCode():获取对象的哈希码值

                     如果不重写该方法,可以理解为该值就是对象在堆内存中的地址

a1.hashCode();
		System.out.println(a1.hashCode());

       

                    toString():将对象转换为字符串

                     注意:使用Sout打印对象时,默认调用haximazh对象的toString方法

可以看到Object源码提供的方法为 包名+类名+@+哈希码值

 

如要转化,还得自己重写

        equals():比较是否相同

                                Object提供的方法是比较对象的内存地址是否相同

                                所以如果用此比较对象的,是不正确的,需要在类中重写

                                1.判断内存地址是否相同

                                2.判断传入对象是否与调用equals方法的兑现是否为同一个类的对象

                                        将传入的对象转换为该类对象,是的话逐一对比其属性

	Dog a1=new Dog("李岁",2);
		
		Dog a2=new Dog("李岁",2);
		
		
		System.out.println(a1.equals(a2));

可以看到并不能比较内容,需要重写

重写

	   public boolean equals(Object obj) {
	       
		   if(this == obj) {
			   
			   return true;
		   }
		           
	        if(this.nameString.equals((Dog)obj.nameString)&&this.age==(dog
)obj.age) {
	        	return true;
	        }
	        
	        return false;
	        
	    }
		Dog a1=new Dog("李岁",2);
		Dog a3=a1;
		Dog a2=new Dog("李岁",1);
		
		
		System.out.println(a1.equals(a2));
		System.out.println(a1.equals(a3));
		

 不过一般我们也可以用编译器自动生成

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Dog other = (Dog) obj;
		if (age != other.age)
			return false;
		if (nameString == null) {
			if (other.nameString != null)
				return false;
		} else if (!nameString.equals(other.nameString))
			return false;
		return true;
	}
	

      可以看到思路大体上一样

                        finalize

                        作用:回收该对象所占内存地址时调用

字符串相关

不可变字符串:String

字符串修改后会生成新字符串,存储在常量区,不会被系统回收

常用的方法:
               1.     charAt(index);获取字符串指定位置的字符

String a1="java中foreach,可以认为是增强版的for语句循环,它可以减少代码量";
		char a2=a1.charAt(0);	
		System.out.println(a2);
		System.out.println(a1.charAt(3));
		

可以看到下标依旧是从0开始

            2.     length():获取字符串长度

a1.length();//获取长度


                3.indexOf(子字符串):子字符串在字符串中第一次出现的位置,如果没有返回-1

String a1="java中foreach,可以认为是增强版的for语句循环,它可以减少代码量";

		System.out.println(a1.indexOf("java"));
		System.out.println(a1.indexOf("c++"));


                4.lastIndexOf(子字符串):子字符串在字符串中最后一次出现的位置,如果没有返回-1

String a1="java中foreach,可以认为是增强版的for语句循环,java里它可以减少代码量";

		System.out.println(a1.lastIndexOf("java"));
		System.out.println(a1.lastIndexOf("c++"));
		


                5.contains(子字符串):判断子字符串是否存在

String a1="java中foreach,可以认为是增强版的for语句循环,java里它可以减少代码量";

		System.out.println(a1.contains("java"));
		System.out.println(a1.contains("c++"));

可见返回值为boolean型
                 

                 6.equals(字符串):判断字符串内容是否相同,区分大小写
                  7.equalsIgnoreCase(字符串):判断字符串内容是否相同,不区分大小写
                

		String b1="AbCdef";
		String b2="abcdeF";
		
		System.out.println(b1.equalsIgnoreCase(b2));

                

  8.toUpperCase():将字符串转换为大写

String a1="AedAEERdAeRFsWeWGHhaAKKAMNAJAKkkakkjajaj";

		System.out.println(a1.toUpperCase());


                   9.toLowerCase():将字符串转换为小写

	String a1="AedAEERdAeRFsWeWGHhaAKKAMNAJAKkkakkjajaj";	
		System.out.println(a1.toLowerCase());
		


                10.endsWith(子字符串):判断字符串是否以子字符串结束
                11.startsWith(子字符串):判断字符串是否以子字符串开始

String a1="AedAEERdAeRFsWeWGHhaAKKAMNAJAKkkakkjajaj   ";	
		
	
		
		System.out.println(a1.endsWith("ad"));//是否以ad结束
		System.out.println(a1.endsWith("aj"));//是否以aj结束
		
		System.out.println(a1.startsWith("Ae"));//是否以Ae开始
		System.out.println(a1.startsWith("we"));//是否以we开始


               

                 12.split(子字符串):将字符串切割

public class Stringgg {
	public static void main(String[] args) {
		String a1="AedAEERdAeRFsWeWGHhaAKKAMNAJAKkkakkjajaj   ";	
		String[] a2=new String[] {};
		
             a2=a1.split("A");//用A将字符串切割
             
             for (String string : a2) {
				System.out.println(string);
			}

		
	}

}


               

a2=a1.split("Ae");

多个字符也可以

                 13.substring(开始位置,结束位置):截取
                     注意:开始位置包含,结束位置不包含

	String a1="AedAEERdAeRFsWeWGHhaAKKAMNAJAKkkakkjajaj   ";	

		System.out.println(a1.substring(0,25));//截取0~25的位置出来,很明显结果是个字符串


                14.replace(oldStr,newString):替换

String a1="AedAEERdAeRFsWeWGHhaAKKAMNAJAKkkakkjajaj   ";	
		
		System.out.println(a1.replace("A","B"));//将A都替换为B
		System.out.println(a1.replaceAll("Ae", "666"));//将Ae都替换为666


                15.isEmpty():判断字符串是否为空字符串

a1.isEmpty();//判断字符串是否为空

                                        返回值为boolean型
               

                         16.trim():忽略字符串前后空白

                        

System.out.println(a1.trim());//忽略前后空白


                17.+:字符串连接符

                 18.toCharArray();//传化为字符数组

                        aString.toCharArray();//传化为字符数组

                                

char[] a3=aString.toCharArray();//传化为字符数组
		
		System.out.println(a3);
		for (char d : a3) {
			System.out.println(d);
		}

                        

可变字符串:StringBuffer,StringBuilder

字符串修改后会生成新字符串,存储在堆内存,会被系统回收

StringBuffer:

                线程安全的, JDK1.0使用,效率低

StringBuilder:

                  线程不安全, JDK1.使用,效率高

方法:

        append(被添加的字符串):添加到尾部

StringBuilder a1=new StringBuilder();
		
		a1.append(""+879);
		
		System.out.println(a1);
		
		a1.append("+zhouhzou");
		
		System.out.println(a1);

   

    delete(start,end):删除指定位置的字符串

a1.delete(2, 5);
		System.out.println(a1);//删除的也是下标开始[2,5  )
		

     

  insert(index,添加的字符串):指定位置添加字符串

a1.insert(2, "jia");
		
		System.out.println(a1);//在第二个位置开始添加字符串jia

 String str = "";
		    long a = System.currentTimeMillis();
		    for (int i = 0; i < 100000; i++) {
		        str += i;
		    }
		    long b = System.currentTimeMillis();
			//输出的是循环所用时间
		    System.out.println(b - a);
		    
   StringBuilder sb = new StringBuilder();
	        long c = System.currentTimeMillis();
	        for (int i = 0; i < 100000; i++) {
	            sb.append(i);
	        }
	        long d = System.currentTimeMillis();
	        //输出的是循环所用时间
	        System.out.println(d - c);

可见使用String大量拼接非常耗时
            

使用不可变字符串String对字符进行大量修改,是在常量区重新创建字符,会使常量区溢出,且耗时,如果需要大量修改,可以使用可变字符串

BigDecimal

作用:精准计算

由于浮点运算运用二进制,难免有的不准确例如:

public class Naber {
	
	public static void main(String[] args) {
		double a=0.1;
		double b=0.01;
		double c=a-b;
		System.out.println(c);
	}

}

结果是不准确的

注意:创建对象时,传入字符串

常用方法:

        subtract:减

        add:加

        multiply:乘

        divide:除

       xxxValue:将BigDecimal对象转换成指定的基本数据类型的值

              


		BigDecimal a1=new BigDecimal(""+0.1);
		BigDecimal b1=new BigDecimal(""+0.01);
		BigDecimal c1=a1.subtract(b1);//此类不能使用+-*/,只能使用其提供的方法  此为减法

		/**
		 * 
		 * add加
		 * 	multiply乘
		 * divide 除
		 * 
		 * 
		 */
		System.out.println(c1);
		
		double d=a1.doubleValue();
		/*
		 * 数据类型  标识符  = 标识符。被转换的数据类型Value();
		 * 
		 * 
		 */

时间相关

Date

        时间

        构造函数与方法

                构造函数:

                                Date():获取当前时间

                                Date(long time):获取距今格林威治时间时间单位毫秒

                getTime():获取对象距离格林威治时间差

                d1.after(Date d2):d1是否在d2之后//返回值为boolean

                d1.before(Date d2):d1//返回值为boolean

	Date date = new Date();//获取时间
	    date.getTime();//获取距离格林威治时间毫秒
		System.out.println(date);
		System.out.println(date.getTime());

Calendar

日历

常用方法

Calendar c = Calendar.getInstance();//生成变量
		System.out.println(c);

创建对象,打印的是日历所有值

getInstance():获取Calendar的对象

set(int field,int value):修改

	c.set(Calendar.YEAR,2000);//修改年
		c.set(Calendar.MONTH,3);//修改月
		c.set(Calendar.DAY_OF_MONTH, 1);//修改日
		c.set(Calendar.HOUR_OF_DAY, 13);//修改小时
		c.set(Calendar.MINUTE, 14);//修改分钟
		c.set(Calendar.SECOND, 52);//修改秒
		c.set(Calendar.MILLISECOND, 520);//修改毫秒
		
		System.out.println(c);

   

可见值已被修改 

实则两者为 Calendar  的get set方法

getTime():将Calendar对象转化为Date对象

    

	Date date = c.getTime();将calendar对象转换为date对象

SimpleDateFormat

概念

时间格式化

作用:

                将Date对象转换为指定格式字符串

	Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		//将date对象转换为特定格式的字符串
		String str = sdf.format(date);
		System.out.println(str);

注意:

y:年

M:月

d:日

h:12小时

H:24小时制

m:分钟

s:秒

S:毫秒

将特定格式的字符转换为date对象:

String time = "2000年1月1日 8:00:00";
		//将特定格式的字符转换为date对象
		Date date2 = sdf.parse(time);
		System.out.println(date2);

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值