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方法
}
}
string、math、random、bigdecimal、date、calender
最新推荐文章于 2024-06-25 00:19:29 发布