测试包装类
package cn.yishan.test;
public class TestWrappedClass {
public static void main(String[] args) {
//基本数据类型转成包装类对象
Integer a = new Integer(3);
Integer b = Integer.valueOf(30);
//把包装类对象转成基本数据类型
int c = b.intValue();
double d = b.doubleValue();
//把字符串转成包装类对象
Integer e = new Integer("999");
Integer f = Integer.parseInt("666666");
//把包装类对象转成字符串
String str = f.toString();
//常见的常量
System.out.println("int类型最大的整数:"+Integer.MAX_VALUE);
}
}
测试自动装箱、自动拆箱
package cn.yishan.test;
public class TestAutoBox {
public static void main(String[] args) {
Integer a = 100; //自动装箱:Integer a = Integer.valueOf(100);
int b = a ; //自动拆箱:编译器会修改成:int b = a.intValue();
Integer c = null;
if(c != null){
int d = c; //自动拆箱:调用了:c.intValue()
}
}
}
测试自动装箱、自动拆箱
package cn.yishan.test;
public class TestAutoBox {
public static void main(String[] args) {
Integer a = 100; //自动装箱:Integer a = Integer.valueOf(100);
int b = a ; //自动拆箱:编译器会修改成:int b = a.intValue();
Integer c = null;
// if(c != null){
// int d = c; //自动拆箱:调用了:c.intValue()
// }
//缓存[-128,127]之间的数字。实际就是系统初始的时候,创建了[-128,127]之间的一个缓存数组。
//当我们调用valueOf()的时候,首先检查是否在[-128,127]之间,如果在这个范围则直接从缓存数组中拿出已经创建好的对象
//如果不在这个范围,则创建新的Integer对象。
Integer in1 = Integer.valueOf(-128);
Integer in2 = -128;
System.out.println(in1 == in2 );//true因为123在缓存范围内
System.out.println(in1.equals(in2));//true
Integer in3 = 1234;
Integer in4 = 1234;
System.out.println(in3 == in4);//false:因为1234不在缓存范围内
System.out.println(in3.equals(in4));//true
}
}
测试String
package cn.yishan.test;
public class TestString {
public static void main(String[] args) {
//String str = "123456";
//String str2 = str.substring(2,5);
//System.out.println(str);
//System.out.println(str2);
//编译器做了优化,直接在编译的时候将字符串进行拼接
String str1 = "hello" + " java";
String str2 = "hello java";
System.out.println(str1 == str2);//true
String str3 = "hello";
String str4 = " java";
//编译的时候不知道变量中存储的是什么,所以没有办法在编译的时候进行优化
String str5 = str3 + str4;
System.out.println(str2 == str5);//false
//做字符串比较的时候,使用equals 不要使用==
System.out.println(str2.equals(str5));//true
}
}
测试StringBuilder、StringBuffer可变字符序列
package cn.yishan.test;
public class TestStringBuilder {
public static void main(String[] args) {
String str;
//StringBuilder线程不安全,效率高(一般使用它);StringBuffer线程安全,效率低。
StringBuilder sb = new StringBuilder("abcdefg");
System.out.println(Integer.toHexString(sb.hashCode()));
System.out.println(sb);
sb.setCharAt(2, 'M');
System.out.println(Integer.toHexString(sb.hashCode()));
System.out.println(sb);
}
}
测试StringBuilder、StringBuffer可变字符序列的常用方法
package cn.yishan.test;
public class TestStringBuilder2 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for(int i = 0 ;i<26;i++){
char temp = (char)('a'+i);
sb.append(temp);
}
System.out.println(sb);
sb.reverse();//倒序
System.out.println(sb);
sb.setCharAt(3,'高');//修改
System.out.println(sb);
//链式调用。核心就是:该方法调用了 return this,把自己返回了
sb.insert(0,'我').insert(6,'爱');//添加
System.out.println(sb);
sb.delete(20,23);//删除
System.out.println(sb);
}
}
测试可变字符序列和不可变字符序列的陷阱(字符串循环累加一定要使用StringBuilder)
package cn.yishan.test;
public class TestStringBuilder3 {
public static void main(String[] args) {
//使用String进行字符串的拼接
String str8 = " ";
for (int i = 0; i < 5000;i++ ){
str8 = str8 + i;//相当于产生了1000个对象,耗时费内存,工作中一定不能出现此种代码
}
//使用StringBuilder进行字符串的拼接
StringBuilder sb1 = new StringBuilder();
for (int i = 0; i < 5000;i++){
sb1.append(i);//建议使用此种方式
}
}
}
package cn.yishan.test;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
//获取当前位置的时间(毫秒)
System.out.println(d.getTime());
Date d2 = new Date();
System.out.println(d2.getTime());
//d是否在d2之后
System.out.println(d.after(d2));
}
}
测试时间对象和字符串之间的互相转换
DateFormat抽象类和SimpleDateFormat实现类的使用
package cn.yishan.test;
import javax.xml.crypto.Data;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateFormat {
public static void main(String[] args) throws ParseException {
//把时间对象按照“格式字符串指定的格式”转成相应的字符串
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String str = df.format(new Date(4000000));
System.out.println(str);
//把字符串按照“格式字符串指定的格式”转成相应的时间对象
DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
Date date = df2.parse("2020年08月13日 11时42分45秒");
System.out.println(date);
//测试其他的格式字符。比如:利用D,获得当前日是本年的第几天
DateFormat df3 = new SimpleDateFormat("D");
String str3 = df3.format(new Date());
System.out.println(str3);
}
}
Calendar类是一个抽象类,提供了关于日期计算的相关功能
测试日期类的使用
package cn.yishan.test;
import javax.xml.crypto.Data;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestCalendar {
public static void main(String[] args) {
//获得日期的相关元素
Calendar calendar = new GregorianCalendar(2999,10,9,22,10,50);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONDAY);
//1-7表示对应的星期几。1是星期一 以此类推
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
//几号
int day = calendar.get(Calendar.DATE);
System.out.println(year);
System.out.println(month);
//0-11表示对应的月份。0是1一月 以此类推
System.out.println(calendar);
System.out.println(weekday);
System.out.println(day);
//设置日期的相关元素
Calendar c2 = new GregorianCalendar();
c2.set(Calendar.YEAR,8012);
System.out.println(c2);
//日期的计算
Calendar c3 = new GregorianCalendar();
c3.add(Calendar.DATE,100);
System.out.println(c3);
//日期对象和时间对象的转化
Date d4 = c3.getTime();
Calendar c4 = new GregorianCalendar();
c4.setTime(new Date());
printCalendar(c4);
}
public static void printCalendar(Calendar c){
//打印:1918年2月3日 11:23:34 周三
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONDAY) + 1;
int date = c.get(Calendar.DAY_OF_MONTH);
int dayweek = c.get(Calendar.DAY_OF_WEEK) - 1;
String dayweek2 = dayweek==0?"日":dayweek+"";
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒"+" 周"+dayweek2);
}
}