day12

一.Arrays类:

      1.此类包含用来操作数组(比如排序和搜索)的各种方法(针对数组操作的工具类)

      2.常用的几个方法:
   (1)public static String toString(int[] a):将任意类型的数组以字符串形式显示出来!
   (2)public static void sort(int[] a):快速排序:(将给定数组中元素升序排序)
   (3)public static int binarySearch(int[] a, int key):当前int数组一定是有序数组
   使用二分搜索法来搜索指定的 int 型数组,以获得指定的值

          例子:

      

public class ArraysDemo {
	
	public static void main(String[] args) {
		
		//定义一个数组
		int[] arr = {24,69,80,57,13} ;
		//讲数组转成字符串的形式
		System.out.println("toString():"+Arrays.toString(arr));
		//[24, 69, 80, 57, 13]
		
		//public static void sort(int[] a):快速排序:(将给定数组中元素升序排序)
		Arrays.sort(arr) ;
		//在调用Arrays.toString(int[] a):将排好序的数组以String形式显示出来
		System.out.println(Arrays.toString(arr) );
		//[13, 24, 57, 69, 80]
		
		//public static int binarySearch(int[] a, int key)
		//查找57元素在数组中的索引
		int index = Arrays.binarySearch(arr, 57) ;
		System.out.println("index:"+index);
		//需求:查找577这个元素的索引
		int index2 = Arrays.binarySearch(arr, 577) ;
		System.out.println("index2:"+index2);//-6
	}
}

二.BigDecimal

1.为什么要用 BigDecimal?

       对于浮点类型的数据类说,他们存储和整数的存储是不一致的,是按照有效数字位来进行存储的,浮点类型的数据计算的时候容易损失精度,计算出来的结果不精确,Java针对这种情况:提供了这个BigDecimal.
 2.作用:来提供浮点类型数据的精确计算!可变的、任意精度的有符号十进制数
 3.构造方式:public BigDecimal(String val)

4.public BigDecimal(String val)常用的成员方法:
   public BigDecimal add(BigDecimal augend):加
  public BigDecimal subtract(BigDecimal subtrahend):减
   public BigDecimal multiply(BigDecimal multiplicand):乘法
  public BigDecimal divide(BigDecimal divisor):除
   public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
   参数1:商, 参数2:保留几位小数,参数3:舍入的一种模式:ROUND_HALF_UP
5.例子:
public class BigDecimalDemo {
	
	public static void main(String[] args) {
		
		System.out.println(1.0-0.32);
		System.out.println(0.01+0.09);
		System.out.println(1.501*100);
		System.out.println(1.031/100);
	}
}
public class BigDecimalDemo2 {
	
	public static void main(String[] args) {
		//创建BigDecimal对象
		BigDecimal bd1 = new BigDecimal("0.01") ;
		BigDecimal bd2 = new BigDecimal("0.09") ;
		
		//public BigDecimal add(BigDecimal augend):加
		System.out.println("add:"+bd1.add(bd2));
		
		BigDecimal bd3 = new BigDecimal("1.0") ;
		BigDecimal bd4 = new BigDecimal("0.32") ;
		
		//public BigDecimal subtract(BigDecimal subtrahend):减
		System.out.println("sub:"+bd3.subtract(bd4));//0.68
		
		//	public BigDecimal multiply(BigDecimal multiplicand):乘法
		BigDecimal bd5 = new BigDecimal("1.501") ;
		BigDecimal bd6 = new BigDecimal("100.0") ;
		System.out.println("mul:"+bd5.multiply(bd6));
		
		//public BigDecimal divide(BigDecimal divisor):除
		BigDecimal bd7 = new BigDecimal("1.301") ;
		BigDecimal bd8 = new BigDecimal("100") ;
		
		System.out.println("div:"+bd7.divide(bd8));
		//public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
//		 * 					参数1:商,	参数2:保留几位小数,参数3:舍入的一种模式:ROUND_HALF_UP
		
		System.out.println("div:"+bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));
		System.out.println("div:"+bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));
		
		
	}
}


三.BigInteger
    1.作用:用来计算超出了Integer类型范围的数据
    2.BigInteger的构造方法: public BigInteger(String val)将字符串表示的数字封装成BigInteger类型
    3..BigInteger的成员方法:
  public BigInteger add(BigInteger val)
   public BigInteger subtract(BigInteger val)
   public BigInteger multiply(BigInteger val)
   public BigInteger divide(BigInteger val)
   public BigInteger[] divideAndRemainder(BigInteger val)
   返回一个BigInteger数组,数组中的元素:商,余数
   4.例子:
public class BigIntegerDemo2 {
	
	public static void main(String[] args) {
		
		//创建BigInteger对象
		BigInteger bg1 = new BigInteger("100") ;
		BigInteger bg2 = new BigInteger("50") ;
		
		//public BigInteger add(BigInteger val)
		System.out.println("add:"+bg1.add(bg2));
//		public BigInteger subtract(BigInteger val)
		System.out.println("sub:"+bg1.subtract(bg2));
		//public BigInteger multiply(BigInteger val)
		System.out.println("mul:"+bg1.multiply(bg2));
		//public BigInteger divide(BigInteger val)
		System.out.println("div:"+bg1.divide(bg2));
		
		BigInteger[] datas = bg1.divideAndRemainder(bg2) ;
		System.out.println("datas[0]:"+datas[0]);//2
		System.out.println("datas[1]:"+datas[1]);//0
		
	}
}
四.Calendar日历类:
     1.Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
     2.Calendar该类是一个抽象类:不能实例化的,所以通过一下这个方法来创建对象
   public static Calendar getInstance()
   public int get(int field)返回给定日历字段的值
 
   public static final int YEAR:表示日历中 的年
   public static final int MONTH:月份:是0开始计算的
   public static final int DATE:和DAY_OF_MONTH是同义词,表示月份中的某天
    3.Calendar常用的成员方法:
  public abstract void add(int field,int amount)
  为给定的日历的字段添加或者减去时间偏移量
   public final void set(int year,int month,int date)
   设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
    4.例子:
public class CalendarDemo {
	
	public static void main(String[] args) {
		// 创建日历类对象
		Calendar calendar = Calendar.getInstance(); //创建日历类对象,需要通过getInstance()方法创建对象
		// 获取年
		// public static final int YEAR
		int year = calendar.get(Calendar.YEAR);

		// 获取:年中的月份
		// public static final int MONTH
		int month = calendar.get(Calendar.MONTH);

		// 获取月份中的天
		// public static final int DATE
		int date = calendar.get(Calendar.DATE);
		
		//输出
		System.out.println(year+"年"+(month+1)+"月"+date+"日");
	}
}
public class CalendarDemo2 {
	
	public static void main(String[] args) {
		
		//创建日历类对象
		Calendar c = Calendar.getInstance() ;
		
		//获取年
		int year = c.get(Calendar.YEAR) ;
		//获取月
		int month = c.get(Calendar.MONTH);
		//获取月中的天
		int date = c.get(Calendar.DATE);
		
		System.out.println(year+"年"+(month+1)+"月"+date+"日");
		
		
		//需求:三年前的今天
//		public abstract void add(int field,int amount)
//		c.add(Calendar.YEAR, -3);
		
//		//获取年
//		year = c.get(Calendar.YEAR) ;
//		//月
//		month = c.get(Calendar.MONTH) ;
//		//天
//		date = c.get(Calendar.DATE) ;
//		
//		System.out.println(year+"年"+(month+1)+"月"+date+"日");
		
		//需求:5年后的十天前
		c.add(Calendar.YEAR, 5) ;
		c.add(Calendar.DATE, -10) ;
		
		//获取年
		year = c.get(Calendar.YEAR) ;
		//获取月
		month = c.get(Calendar.MONTH) ;
		//月汇总的天
		date = c.get(Calendar.DATE) ;
		
		System.out.println(year+"年"+(month+1)+"月"+date+"日");
		
		//public final void set(int year, int month, int date)
		c.set(2018,5,20) ;
		//获取年
		year = c.get(Calendar.YEAR) ;
		//获取月
		month = c.get(Calendar.MONTH) ;
		//月汇总的天
		date = c.get(Calendar.DATE) ;
		System.out.println(year+"年"+(month+1)+"月"+date+"日");
		
		

五.Date类:日期类
   1.表示特定的瞬间,精确到毫秒。
   2.常用的构造方式:
   public Date():表示分配的一个Date对象:无参: 通过无参构造获取当前系统的具体的时间
   public Date(long date):指定一个时间毫秒值  和它1970-1-1 00:00:00有时间差
        3.Date中的两个成员方法
   public long getTime():获取当前时间毫秒值
        如果知道Date对象,可以通过getTime()获取时间毫秒值
        public void setTime(long time)
        4.将Date对象--->String类型的日期的"文本格式":格式化
   public final String format(Date date)

                String类型日期的"文本格式"---->Date日期对象:解析
   public Date parse(String source) 该方法本身会抛出一个异常:ParseException(解析异常:编译时期异常)
          要进行转换:必须使用中间桥梁:DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并           解析日期或时间。
     日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期Date -> 文本String)、解析(文              本String-> 日期Date)和标准化
  
   但是,DateFormat是抽象类,不能直接实例化,使用的是它更具体的子类进行实例化:
  SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类
  
   常用的构造方法:
   Date---格式化--->String文本格式
   public SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
 
   日期和时间模式
  y 比如:2017---->yyyy
   M 年中的月份:2------>MM
   d   月份中的天数 :----->dd
   H 小时 HH
   m 小时中的分钟数 mm
  s 分钟中的秒数 ss
  5.例子:
1.
public class DateDemo {
	public static void main(String[] args) {
		
		//创建日期对象
		Date d = new Date() ;
		
		//输出日期对象
		System.out.println("d:"+d);//Sat Nov 04 15:05:43 CST 2017 :获取当前系统的年月日以及时分秒 星期...
		
		//设置一个时间long
		long time = 1000/60/60 ;
		Date d2 = new Date(time) ;
		System.out.println("d2:"+d2);
		
	}
}
2.
public class DateDemo2 {
	
	public static void main(String[] args) {
		//创建一个日期对象
		Date d = new Date() ;
		System.out.println(d);
		
		//public long getTime():获取当前时间毫秒值
		long time = d.getTime() ;
//		System.out.println(time);
		
//		System.out.println(System.currentTimeMillis());//通过System可以获取当前时间的毫秒数
		
		//public void setTime(long time)
		d.setTime(1000) ;
		System.out.println(d);
	}
}
3.
public class DateFormatDemo {
	
	public static void main(String[] args) throws ParseException {
		
		//Date日期对象--->格式化---->String:日期文本格式
		//创建日期对象
		Date d = new Date() ;
//		System.out.println(d);
		
		//创建SimpleDateFormat类对象,用该对象格式化Date对象
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
		//格式化
		//public final String format(Date date)
		String dateStr = sdf.format(d) ;
		System.out.println("dateStr:"+dateStr);
		
		System.out.println("-----------------------");
		
		//String日期"文本格式"----->解析----->Date对象
		/**
		 * 注意事项:
		 * 		一定要保证SimpleDateFormat中的String Pattern这个模式和当前给的字符串的文本格式的模式必须一致!
		 */
		String s = "2017-12-30" ;
		
		//创建SimpleDateFormat类的对象,用该对象解析String的日期的"文本格式"
//		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;
		//ava.text.ParseException: Unparseable date: "2017-12-30"
		//开始解析
		//public Date parse(String source)
		
		Date d2 = sdf2.parse(s);

		System.out.println("d2:"+d2);
	}
}

六.Math类提供了一些数学运行的方法
   1.常用的成员方法:
   public static int abs(int a):绝对值
  public static double ceil(double a):向上取整
   public static double floor(double a):向下取整
   public static double max(double a,double b):获取最大值
   public static double min(double a,double b):获取最小值
   public static double pow(double a,double b):a的b次幂
   public static double random():取值范围:[0.0,1.0)
   public static long round(double a):四舍五入

    2.例子:
public class MathDemo {
	public static void main(String[] args) {
		
//		System.out.println(Math.abs(-100));
		System.out.println(java.lang.Math.abs(-100));
		System.out.println(java.lang.Math.abs(-100));
		
		//public static double ceil(double a):向上取整
		System.out.println("ceil:"+Math.ceil(12.34));
		System.out.println("ceil:"+Math.ceil(12.54));
		
		//public static double floor(double a):向下取整	
		System.out.println("floor:"+Math.floor(12.34));
		System.out.println("floor:"+Math.floor(12.56));
		
//		public static double max(double a,double b):获取最大值
		System.out.println("max:"+Math.max(Math.max(10,20),30));
		
		//public static double pow(double a,double b):a的b次幂
		System.out.println("pow:"+Math.pow(2, 3));
		
		//public static long round(double a):四舍五入
		System.out.println("round:"+Math.round(12.56));
		
		//public static double sqrt(double a):一个数的正平方跟
		System.out.println("sqrt:"+Math.sqrt(4));
		
	}
	
//	public static void abs(String name){
		
//	}
}


 

七.System类

     1.该类没有构造方法,所以字段和成员方法都用静态修饰


     2.常用的两个字段:in ,out都和流有关系:java.io...
     PrintStream(字节打印流) ps = System.out ;标准输出流
     PrintWriter(字符打印流)
          InputStream  in =  System.in;标准输入流


     3. 常用的成员方法:
      public static void gc()运行垃圾回收器。 
调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存,
最终调用的就是重写之后finalize()回收不用的对象!
public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
public static long currentTimeMillis():返回当前的时间毫秒值

  
         例子:

         

public class SystemDemo {
	
	public static void main(String[] args) {
		
//		Scanner sc = new Scanner(System.in) ;
		
//		System.err.println("请您输入一个数据:");
		
//		System.out.println("hello");
		
		//创建Person类对象
		Person p = new Person("高圆圆", 27) ;
		System.out.println(p);
		
		p = null ; //当前Person变成空了,没有更多的引用了
		
		//启动垃圾回收器
		System.gc() ;//当前垃圾回收器需要回收不用对象了Person [name=高圆圆, age=27]
		
	}
}
public class Person {
	//成员变量
	private String name;
	private int age ;
	
	public Person() {
		super();
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
	
	//重写Object中的finalize()方法
	@Override
	protected void finalize() throws Throwable {
		System.out.println("当前垃圾回收器需要回收不用对象了"+this);
		super.finalize();
	}
	
	
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值