欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基础:【6】常用类

程序员文章站 2022-06-28 16:30:29
常用类...

 

一、包装类

包装类(Wrapper Class):将基本数据转化成对象。

基本数据类型对应的包类型:

基本数据类型 包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double
package test;
/**
 * 测试包装类(Integer类)
 * @author 林
 *
 */
public class testWrappedClass {
	public static void main(String[] args) {
		//基本数据类型转换成包装类对象
		Integer a=new Integer(10);
		
		//包装类对象转换成基本数据类型
		int b=a.intValue();
		
		//字符串转换成包装类对象
		Integer c=new Integer("99999");
		
		//包装类对象转换成字符串
		String str=c.toString();
		
		//常量
		System.out.println(Integer.MAX_VALUE);		
	}
}

 

 整型、char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓存处理,其目的是提高效率。

package test;
/**
 * 测试自动装箱、自动拆箱、缓存
 * @author 林
 *
 */
public class TestAutoBox {
	public static void main(String[] args) {
		Integer a=123;	//自动装箱,编译器执行Integer  a = Integer.valueOf(234);
		int b=a;		//自动拆箱,编译器执行int  b = a.intValue();
		
		Integer i1=Integer.valueOf(123);
		Integer i2=Integer.valueOf(123);
		System.out.println(i1==i2);		//true,因为123在缓存[-128,127]范围内
		System.out.println(i1.equals(i2));
		
		Integer i3=Integer.valueOf(1234);
		Integer i4=Integer.valueOf(1234);
		System.out.println(i3==i4);		//false,因为1234不在缓存[-128,127]范围内
		System.out.println(i3.equals(i4));
	}
}

 

二、String类

做字符串比较的时候,使用equals不要使用==。

package test;
/**
 * 字符串常量拼接时的优化
 * @author 林
 *
 */
public class TestString {
	public static void main(String[] args) {
		String s1="Hello"+" Java";	//相当于s1 = "hello java";
		String s2="Hello Java";
		System.out.println(s1==s2);		//true
		
		String s3="Hello";
		String s4=" Java";
		String s5=s3+s4;
		System.out.println(s5==s2);		//false
		System.out.println(s5.equals(s2));	//true
	}
}

 

StringBuilder、StringBuffer可变字符序列。

StringBuilder线程不安全,效率高(一般使用它);StringBuffer线程安全,效率低。

package test;
/**
 * 测试StringBuilder、StringBuffer
 * @author 林
 *
 */
public class TestStringBuilder {
	public static void main(String[] args) {
		StringBuilder s1=new StringBuilder("ABCDE");
		
		System.out.println(Integer.toHexString(s1.hashCode()));
		System.out.println(s1);
		
		s1.setCharAt(2, 'Y');
		System.out.println(Integer.toHexString(s1.hashCode()));
		System.out.println(s1);
	}
}

15db9742
ABCDE
15db9742
ABYDE

 

package test;
/**
 * 测试StringBuilder、StringBuffer常用方法
 * @author 林
 *
 */
public class TestStringBuilder {
	public static void main(String[] args) {
		StringBuilder s1=new StringBuilder("ABCDEFG");
		
		s1.reverse();	//倒序
		System.out.println(s1);
		
		s1.setCharAt(3, '林');	//替换字符
		System.out.println(s1);
		
		s1.insert(0, '我').insert(1, '爱').insert(2, '你');		//插入字符,链式调用
		System.out.println(s1);
		
		s1.delete(7, 8);	//删除字符
		System.out.println(s1);
	}
}

 

package test;
/**
 * 测试String累加字符效率
 * @author 林
 *
 */
public class TestStringBuilder {
	public static void main(String[] args) {
		String s1="";		
		long m1=Runtime.getRuntime().freeMemory();// 获取系统剩余内存空间
		long t1=System.currentTimeMillis();// 获取系统的当前时间		
		for(int i=0;i<10000;i++) {
			s1+=i;
		}
		long m2=Runtime.getRuntime().freeMemory();
		long t2=System.currentTimeMillis();
		System.out.println("s1占用内存 : "+(m2-m1));
		System.out.println("s1耗时:"+(t2-t1));
		
		StringBuilder s2=new StringBuilder("");
		long m3=Runtime.getRuntime().freeMemory();// 获取系统剩余内存空间
		long t3=System.currentTimeMillis();// 获取系统的当前时间		
		for(int i=0;i<10000;i++) {
			s2.append(i);
		}
		long m4=Runtime.getRuntime().freeMemory();
		long t4=System.currentTimeMillis();
		System.out.println("s2占用内存 : "+(m4-m3));
		System.out.println("s2耗时:"+(t4-t3));			
	}
}

s1占用内存 : 141011376
s1耗时:231
s2占用内存 : 0
s2耗时:1

 

三、Date类

1970 年 1 月 1 日 00:00:00定为基准时间。

获取当前时间:

long now = System.currentTimeMillis();

 

package test;

import java.util.Date;
/**
 * 测试Date类
 * @author 林
 *
 */
public class TestDate {
	public static void main(String[] args) {
		Date d1=new Date(2000);	//时间开始1970,单位毫秒
		System.out.println(d1);
		
		System.out.println(d1.getTime());	//获取毫秒数
		
		Date d2=new Date();		//不带参数,获取当前时间
		System.out.println(d2);
		System.out.println(d2.getTime());
	}
}

 

package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 测试DateFormat类
 * @author 林
 *
 */
public class TestDateFormat {
	public static void main(String[] args) throws ParseException {
		
		//时间对象转换为字符串
		DateFormat df1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");	//指定时间格式
		String s1=df1.format(new Date());
		System.out.println(s1);
		
		//字符串转换成时间对象
		DateFormat df2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date d1=df2.parse("2020-1-1 00:00:00");
		System.out.println(d1);	
		
		DateFormat df3=new SimpleDateFormat("D");	//获取所处年份的第几天
		String s2=df3.format(new Date());
		System.out.println(s2);
	}
}

 

package test;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 测试日期类
 * @author 林
 *
 */
public class TestCalendar {
	public static void main(String[] args) {
		//获取日期相关元素
		Calendar c1=new GregorianCalendar(2021,01,02,20,10,10);
		int year=c1.get(Calendar.YEAR);
		int month=c1.get(Calendar.MONTH);
		int day=c1.get(Calendar.DATE);
		int week=c1.get(Calendar.DAY_OF_WEEK);
		System.out.println(year+"-"+month+"-"+day);
		
		//设置日期的相关元素
		Calendar c2=new GregorianCalendar();
		c2.set(Calendar.YEAR, 2021);
		System.out.println(c2);
		
		//日期的计算
		Calendar c3=new GregorianCalendar();
		c3.add(Calendar.YEAR, 100);
		System.out.println(c3);
		
		//日期对象和时间对象的转化
		Date d1=c3.getTime();
		System.out.println(d1);
		Calendar c4=new GregorianCalendar();
		c4.setTime(new Date());
		System.out.println(c4);		
	}
}

 

package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
 * 测试打印日历
 * @author 林
 *
 */
public class TestCalendar {
	public static void main(String[] args) throws ParseException {
		//String s1="2020-9-10";
		System.out.println("请输入日期(格式:2020-9-10):");
		Scanner s=new Scanner(System.in);
		String s1=s.nextLine();
		
		DateFormat df1=new SimpleDateFormat("yyyy-MM-dd");
		Date d1=df1.parse(s1);	//字符串转换时间对象
		
		Calendar c=new GregorianCalendar();
		c.setTime(d1); 	// 时间对象转换日期对象
		
		System.out.println("日\t一\t二\t三\t四\t五\t六");	//打印首行
		
		int days=c.getActualMaximum(Calendar.DATE);
		int day=c.get(Calendar.DAY_OF_MONTH);
		
		c.set(Calendar.DAY_OF_MONTH, 1);	//重置日期天数为1
		
		for(int i=0;i<c.get(Calendar.DAY_OF_WEEK)-1;i++) {	//打印首行空位
			System.out.print("\t");
		}
		
		for(int i=1;i<=days;i++) {
			if(day==c.get(Calendar.DAY_OF_MONTH)) {		//打印日期
				System.out.print(c.get(Calendar.DAY_OF_MONTH)+"*\t");
			}else {
				System.out.print(c.get(Calendar.DAY_OF_MONTH)+"\t");
			}
			if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {	//设置自动换行
				System.out.println();
			}
			c.add(Calendar.DAY_OF_MONTH, 1);
		}
		
	}
}

 

四、Math类

Math类常用方法 描述
abs 绝对值
acos,asin,atan,cos,sin,tan 三角函数
sqrt 平方根
pow(double a, double b) a的b次幂
max(double a, double b)  取大值
min(double a, double b)  取小值
ceil(double a)  大于a的最小整数
floor(double a)  小于a的最大整数
random()  返回 0.0 到 1.0 的随机数
long round(double a) double型的数据a转换为long型(四舍五入)
toDegrees(double angrad) 弧度->角度
toRadians(double angdeg) 角度->弧度

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、File类

package test;

import java.io.File;
import java.io.IOException;

/**
 * 测试创建文件
 * @author 林
 *
 */
public class TestFile {
	public static void main(String[] args) throws IOException {
		System.out.println(System.getProperty("user.dir"));	//获取当前路径
		File f=new File("a.txt");
		f.createNewFile();	//创建文件	
	}
}

 

package test;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * 测试文件相关方法
 * @author 林
 *
 */
public class TestFile {
	public static void main(String[] args) throws IOException {
		File f=new File("a.txt");
		System.out.println("File是否存在:"+f.exists());
        System.out.println("File是否是目录:"+f.isDirectory());
        System.out.println("File是否是文件:"+f.isFile());
        System.out.println("File最后修改时间:"+new Date(f.lastModified()));
        System.out.println("File的大小:"+f.length());
        System.out.println("File的文件名:"+f.getName());
        System.out.println("File的目录路径:"+f.getAbsolutePath());
	}
}

 

package test;

import java.io.File;

/**
 * 测试创建目录
 * @author 林
 *
 */
public class TestFile {
	public static void main(String[] args){
		File f=new File("d:/Java/Test");
		boolean flag=f.mkdirs();	//创建目录
		System.out.println(flag);
	}
}

 

package test;

import java.io.File;

/**
 * 测试使用递归算法打印目录树
 * @author 林
 *
 */
public class PrintFileTree {
	public static void main(String[] args) {
		File f=new File("D:\\Technology\\Java\\尚学堂Java300集2018版高琪\\05_常用类");
		printFile(f,0);
	}
	
	static void printFile(File f,int leavel) {
		for(int i=0;i<leavel;i++) {	//输出层次数
			System.out.print("--");
		}
		System.out.println(f.getName());	//输出文件名
		if(f.isDirectory()) {	//如果f是目录,则获取子文件列表,并对每个子文件进行相同的操作
			File[] fs=f.listFiles();
			for(File temp:fs) {
				printFile(temp,leavel+1);
			}
		}
	}
}

 

六、枚举类

package test;
/**
 * 测试枚举类
 * @author 林
 *
 */
public class TestEnum {
	public static void main(String[] args) {
		Season s=Season.AUTUMN;
		switch(s) {
		case SPRING:
			System.out.println("春天来了");
			break;
		case SUMMER:
			System.out.println("夏天来了");
			break;
		case AUTUMN:
			System.out.println("秋天来了");
			break;
		case WINTER:
			System.out.println("冬天来了");
			break;
		}
	}
}

enum Season{
	SPRING, SUMMER,AUTUMN,WINTER
}

 

本文地址:https://blog.csdn.net/linwenhai2018/article/details/111559288

相关标签: Java