java - 工具类 - 包装类,数字相关类, 日期相关类
2020-12-13 16:01
标签:存在 int() mod 引用类型 string date put add 工具 工具类:java开发者写好的类 1.包装相关类 2.数字相关类 3.日期类 4.字符串 5.集合相关类 6.异常相关类 7.输入输出相关 IO(input/output) 8.线程 9.网络 10.注解 11.GUI 1.包装类: 为了将基本类型也面向对象,所以将他们分装进包装类中 1.byte -- Byte,short --Short,int -- Integer,long -- Long 2.float -- Float,double -- Double 3.char -- Character 4.boolean -- Boolean 6个数字相关的类都继承Number类 除了Character都有用String类型作为参数的构造方法, 也可以用 类名.valueOf(); 2.数学相关的类: Math用来进行基本类型的运算相关 Random BigInteger BigDecimal 3.日期: Date Calendar java - 工具类 - 包装类,数字相关类, 日期相关类 标签:存在 int() mod 引用类型 string date put add 工具 原文地址:https://www.cnblogs.com/clamp7724/p/11617563.htmlpackage number_test;
public class NumberTest {
public static void main(String[] args){
//构造方法和valueOf
//注意这类变量是包装类的类型,不是基本类型,基本类型是小写。
Integer i1 = 111;
Integer i2 = 111;
Integer i3 = new Integer("111");
Integer i4 = new Integer("111");
Integer i5 = i3;
//使用起来和 基本类型int 基本没区别,可以加减乘除打印等,但是储存方法不同,
// == 比较基本类型比较的是值,比较引用类型则比较的是地址, equals比较的是值(所以也用来比较String这种引用类型)
// Integer直接赋值时,值存在方法区的静态元素区,值一样时地址也一样。 java底层有一个静态数组,里面存了-127 - 128,直接赋值会把变量指向这个数组对应位置。
//因为静态数组是-127 - 128,所以如果Integer的值大于这个范围,则会自动给他new一个对象存在堆内存中
System.out.println("i1 == i2: " + (i1 == i2)); //定义时两个存在了方法区的静态元素区中
i1 = 1111;
i2 = 1111;
System.out.println("i1 == i2: " + (i1 == i2)); //定义时两个存在了堆内存中
System.out.println("i3 == i4: " + (i3 == i4)); //两个定义时用了new,存在了堆内存,所以地址不同
System.out.println("i3 == i5: " + (i3 == i5));
System.out.println("i1 .equals( i2 ): " + (i1.equals(i2)));
System.out.println("i3 .equals( i4 ): " + (i3.equals(i4)));
// i1 == i2: true
// i1 == i2: false
// i3 == i4: false
// i3 == i5: true
// i1 .equals( i2 ): true
// i3 .equals( i4 ): true
//String
String s1 = i1.toString();
String s2 = i2.toString();
System.out.println("s1 == s2: " + (s1 == s2)); //值通过计算获得,两者地址不同
System.out.println("s1.equali3;s(s2): " + (s1.equals(s2)));
s1 = "abc";
s2 = "abc";
System.out.println("改为直接赋值:s1 == s2: " + (s1 == s2)); //如果是直接赋值,他们的值会相同 - -这里我有点没明白
//查资料,说是java对String进行了优化,刚赋值时会存入缓存池,如果之后有相同的赋值操作,会指向同一个地址,不是直接赋值或者赋不同值才会new新对象。
//所以测试一下:
String s3 = "bcd";
String s4 = "bc"; //这里应该是已经new了一个新对象,再改变他应该就不会相等了。
s4 = s4 + "d"; //s4 = s4 + "d";是false,如果直接 s4 = "bc" + "d";则下面s3 == s4依旧为true,稍微有点不太明白- -
System.out.println("直接赋值测试:s1 == s2: " + (s1 == s2));
System.out.println("直接赋值测试:s3 == s4: " + (s3 == s4));
// s1 == s2: false
// s1.equali3;s(s2): true
// 改为直接赋值:s1 == s2: true
// 直接赋值测试:s1 == s2: true
// 直接赋值测试:s3 == s4: false
Byte b = Byte.valueOf("111");
int i = Integer.valueOf("111");
Long l = Long.valueOf("222");
Float f = new Float("1.1");
Double d = Double.valueOf("2.2");
boolean bt = new Boolean("true");
Boolean bf = Boolean.valueOf("false");
//可以直接使用
System.out.println(i * 10);
System.out.println(l * 10);
System.out.println(f * 10);
System.out.println(d * 10);
if(bt){
System.out.println(bt);
}
if(!bf){
System.out.println(bf);
}
// 1110
// 2220
// 11.0
// 22.0
// true
// false
//intValue
int intTest = i1.intValue(); //把包装类变成基本类型
int doubleTest = d.intValue();//取整数部分
int charTest = ‘a‘;//asc码转成数字,char和int可以直接转换
int stringTest = Integer.parseInt("111");//直接把字符串转为int
System.out.println(intTest);
System.out.println(doubleTest);
System.out.println(charTest);
System.out.println(stringTest);
// 111
// 2
// 97
// 111
//于是想测试一下。。。
System.out.println("i3 == i4: " + (i3 == i4)); //两个定义时用了new所以地址不同
int ii3 = i3.intValue();
int ii4 = i4.intValue();
System.out.println("ii3 == ii4: " + (ii3 == ii4)); //两个定义时用了new所以地址不同
//i3 == i4: false
//ii3 == ii4: true
//int值存在常量区,所以只要值一样地址就一样,
// Integer不是直接赋值时,如new赋值时,和引用类型一样
// intValue()是把Integer对象类型变成int的基础数据类型;
// parseInt()是把String 变成int的基础数据类型;
// Valueof()是把给定的String参数转化成Integer对象类型;
//不过现在java支持自动转换了,所以其实可以混着用。。。
}
}
package Math_test;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Random;
public class MathTest {
public static void main(String[] args){
//Math构造方法为私有,方法都是static,所以可以直接调用(单例模式),Math有很多方法,只挑部分常用的
//Math.random(),返回一个0-1之间的double类型的数字
for(int i = 0; i ){
System.out.println(Math.random());//返回一个0-1之间的double类型的数字
}
// 0.30222893423699926
// 0.37739767545532177
// 0.13927359803309325
// 0.9123839746760073
// 0.9768944004877123
//Random,专门用来生成随机数的类
for(int i = 0; i ){
System.out.println( new Random().nextInt(10) );//返回一个0-9之间的int类型的数字 ,还可以nextFloat,nextBoolean等
}
// 8
// 5
// 3
// 3
// 0
//Math.abs(); 变为正数
int i = -111;
System.out.println( Math.abs(i) );
//取最近值
System.out.println( Math.ceil(1.4) ); //向上取
System.out.println( Math.ceil(1.5) ); //向上取
// 2.0
// 2.0
System.out.println( Math.floor(1.8) );//向下取
System.out.println( Math.floor(1.5) );//向下取
// 1.0
// 1.0
System.out.println( Math.rint(1.4) ); //最近的整数,一样的话返回偶数
System.out.println( Math.rint(1.5) ); //最近的整数,一样的话返回偶数
System.out.println( Math.rint(2.5) ); //最近的整数,一样的话返回偶数
// 1.0
// 2.0
// 2.0
System.out.println( Math.round(1.4) );//四舍五入返回int
System.out.println( Math.round(1.5) );//四舍五入返回int
System.out.println( Math.round(2.5) );//四舍五入返回int
// 1
// 2
// 3
//负数测试:
System.out.println( Math.ceil(-1.4) ); //向上取
System.out.println( Math.ceil(-1.5) ); //向上取
// -1.0
// -1.0
System.out.println( Math.floor(-1.8) );//向下取
System.out.println( Math.floor(-1.5) );//向下取
// -2.0
// -2.0
System.out.println( Math.rint(-1.4) ); //最近的整数,一样的话返回偶数
System.out.println( Math.rint(-1.5) ); //最近的整数,一样的话返回偶数
System.out.println( Math.rint(-2.5) ); //最近的整数,一样的话返回偶数
// -1.0
// -2.0
// -2.0
System.out.println( Math.round(-1.4) );//四舍五入返回int
System.out.println( Math.round(-1.5) );//四舍五入返回int
System.out.println( Math.round(-2.5) );//四舍五入返回int
// -1
// -1
// -2
//Math.max, Math.min
System.out.println( Math.max(111,222) );//取最大值
System.out.println( Math.min(111,222L) );//取最小值
// 222
// 111
//Math.sqrt() 平方根
System.out.println( Math.sqrt(1.21) ); //double类型返回
System.out.println( Math.sqrt(9) ); //double类型返回
// 1.1
// 3.0
//BigInteger,用来储存超大整数
BigInteger bi = new BigInteger( "5555555555555555555555555555555555555555555555555555555555555555");
System.out.println(bi);
// 111111111111111111111111111111111111111111111111111111111111111111
System.out.println(bi.add(new BigInteger( "1111111122222222222222222233333333333333333333333333333444444444")));//加
System.out.println(bi.subtract(new BigInteger("1111111122222222222222222233333333333333333333333333333444444444")));//减
System.out.println(bi.multiply(new BigInteger("11111111")));//乘
System.out.println(bi.divide(new BigInteger( "1111111111111111111111111111111111111111111111111111111111111111")));//除
//BigInteger的运算只能是BigInteger之间
// 5555555555555555555555555555555555555555555555555555555555555555
// 6666666677777777777777777788888888888888888888888888888999999999
// 4444444433333333333333333322222222222222222222222222222111111111
// 61728394444444444444444444444444444444444444444444444444444444438271605
// 5
//BigDecimal,用来储存超大小数,加减乘除运算和NigInteger一致
BigDecimal bd = new BigDecimal("55555555555555555555555555555555.555555555555555555555555555555555555555555555555555555");
System.out.println(bd.add(new BigDecimal("55555555555555555555555555555555.555555555555555555555555555555555555555555555555555555")));
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP)); //setScale(int newScale, RoundingMode roundingMode)
System.out.println(bd.setScale(2,BigDecimal.ROUND_DOWN));
// 111111111111111111111111111111111.111111111111111111111111111111111111111111111111111110
// 55555555555555555555555555555555.56
// 55555555555555555555555555555555.55
}
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeTest {
public static void main(String[] args){
System.out.println(System.currentTimeMillis());//计算机元年1970.1.1到现在的毫秒差
try {
Thread.sleep(3000); //尝试让这个线程睡眠3000毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(System.currentTimeMillis());
//正好过了3000毫秒
// 1570000718473
// 1570000721473
//这个方法也可以用来测试电脑或者程序运算性能
//Date
Date d = new Date(System.currentTimeMillis()); //构造方法中添加的是计算机元年1970.1.1到现在的毫秒差
d = new Date();//直接new默认当前时间
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss");
System.out.println(simpleDateFormat.format(d));
//2019-10-02 03:23:22
//Date现在很少使用了,日期处理采用calendar
Calendar cal = Calendar.getInstance(); //创建当前时间的时间对象
//public void set(int year,int month,int date,int hourofday,int minute,int second)
cal.set(1990,5,26,2,15,16);
cal.set(Calendar.DATE, 2);
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH);
// 获取日
int date = cal.get(Calendar.DATE);
// 获取时
int hour = cal.get(Calendar.HOUR); //会自动 %12,所以上面就算hourOfDay设成25也是能存入 1 的= =
//getTimeZoon();
System.out.println("timeZoon = " + cal.getTimeZone().getDisplayName());
System.out.println(simpleDateFormat.format(cal.getTime()));//simpleDateFormat一样可以处理cal,需要把calendar先转为date
}
}
上一篇:WebMail
下一篇:go语言标准库之fmt
文章标题:java - 工具类 - 包装类,数字相关类, 日期相关类
文章链接:http://soscw.com/essay/35648.html