day12

xiaoxiao2021-02-28  8

一.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(); } }  

转载请注明原文地址: https://www.6miu.com/read-1100280.html

最新回复(0)