Java基础:【6】常用类
程序员文章站
2022-03-25 13:02:10
常用类...
一、包装类
包装类(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
上一篇: JVM入门(JVM参数详解和常用命令)
下一篇: C语言实现三子棋游戏含完整代码