string、math、random、bigdecimal、date、calender 深藏阁楼爱情的钟 2021-09-11 07:10 248阅读 0赞 package gcj; import java.math.BigDecimal; import java.time.Year; import java.util.Calendar; import java.util.Date; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import javax.xml.crypto.Data; import six.Init4; /* 2017-02-15 19:33:41 * object 是所有类、数组、枚举类的父类 * 允许吧任何类型的对象赋给object类型的变量 * 定义一个类时 默认的都是继承object父类 */ public class Objectj { public static void main(String[] args) throws CloneNotSupportedException { // clonej(); // stringj(); // mathj(); // randomj(); // bigdecimalj(); // datej(); } /* 2017-02-15 21:44:42 * */ private static void datej() { /* * date util 包下的处理日期时间 * 有6个构造器 * date 生成一个代表当前日期时间的date对象 构造器 底层调用system.currentTimeMillis 获得long整数作为日期参数 * * calendar 类 * 是一个抽象类 * 可以创建自己的calendar子类 作为calendar 使用 (多态) * getInstance 方法获取calendar对象 * java8 新增了time包 * */ Date date = new Date(); System.out.println(date); Calendar calendar = Calendar.getInstance(); int Year = 1 ; System.out.println(calendar.get(Year)); } /* 2017-02-15 21:10:11 * */ private static void bigdecimalj() { /* * BigDecimal类 * float 、double两种基本浮点类型时 * * */ BigDecimal bigDecimal1 = new BigDecimal("0.005"); // 优先使用string构造器 的结果是可预知的 BigDecimal bigDecimal2 = BigDecimal.valueOf(0.01); BigDecimal bigDecimal3 = new BigDecimal(0.006); System.out.println(bigDecimal1.add(bigDecimal2) + "精度不丢失"); System.out.println(bigDecimal2.add(bigDecimal3) + "精度丢失"); } /* 2017-02-15 20:58:08 * */ private static void randomj() { /* * Random 生成一个伪随机数, * 有两个构造器 * * 一个构造器使用的默认的种子 (以当前的时间作为种种) * 一个构造器需要程序员显示传入一个long型整数的种子 * * ThreadLocalRadom 类是一个新整的类 是增强版的 * 并发情况下 使用threadlocalradom 代替 random 减少多线程资源竞争 * 保证系统具有更好的线程安全性 * * 提供一个 static current 方法来获取 threadlocalradom 来获取threadlocaradom对象 * 获取对象后 调用next 方法来获取伪随机数 * * */ Random random = new Random(); System.out.println(random.nextInt(5)); // 默认以当前时间 //random 产生的数字并不是真正随机数, //避免连个random对象产生相同的数字序列,通常使用氮气时间作为random种子 Random random2 = new Random(System.currentTimeMillis()); //使用多线程 ThreadLocalRandom threadLocalRandom =ThreadLocalRandom.current(); System.out.println(threadLocalRandom.nextInt(1,52)); //随机出 1-52的随机数 } /* 2017-02-15 20:40:19 * */ private static void mathj() { /* * math类 * * * */ System.out.println(Math.toDegrees(1.22)); //弧度转成角度 System.out.println(Math.toRadians(69)); //角度转弧度 System.out.println(Math.floor(-1)); // 取整 返回小于目标数的最大整数 System.out.println(Math.ceil(1.2)); // 取整 返回大于目标数的最小整数 System.out.println(Math.round(2.3)); //四舍五入 } /* 2017-02-15 20:32:35 * */ private static void stringj() { /* * string 类是一个不可变类 * 一旦一个string对象被创建后 * 包含在这个对象中的字符序列是不可改变的 * 直到这个对象被销毁 * * * stringbuffer 对象则代表一个字符序列可变的字符串 * stringbuffer 创建后 * 可以通过 append insert reverse setcharat setlength 等方法改变这个字符串对象的字符序列 * 可以通过tostring方法将其转换为一个string对象 * 线程安全 * * * stringbuilder 也代表字符串对象 * 线程不安全 * * * 都实现了 charSequence 可认为是一个字符串的协议接口 * */ String string = new String("asdfasdf"); System.out.println(string.charAt(3)); // 输出 第三个字母 // string.compareTo() 比较两个字符串 的大小 返回第一个不相等的字符差, 或者返回他们的长度差 String string2 = new String("aaaaadfadsfasd"); System.out.println(string.endsWith(string2)); // 是否以 string2 结尾 } /* 2017-02-15 20:24:43 * */ private static void clonej() throws CloneNotSupportedException { /* * * 提供一个Protected 修饰的clone 方法 * 自我克隆 * 得到一个当前对象的副本 * 二者完全隔离 * * 自定类 实现 克隆 * 自定义类实现cloneable 接口 这是一个标记性的接口, 实现该接口 的对象可以实现 自我克隆 接口没有定义任何方法 * 自定义类 实现自己的clone方法 * * 实现clone方法 是通过super.clone 方法 * 调用object实现的clone方法来得到该对象的副本,并返回该副本 * * * */ user u1 = new user(1); user u2 = u1.clone(); // 只是一个浅克隆 只克隆该对象的所有成员变量值,不会对引用类型的成员变量值所引用的对象进行克隆 System.out.println( u1 == u2 ); System.out.println( u1.ad == u2.ad); } } //实现coloneable class address{ String detail ; public address(String detail) { super(); this.detail = detail; } } class user implements Cloneable { // 实现cloneable接口 int age; address ad ; public user( int age) { this.age = age ; address a = new address("郑州"); } public user clone() throws CloneNotSupportedException { return (user)super.clone(); //调用super 来实现clone方法 } }
还没有评论,来说两句吧...