Java中的对象数组 Calendar日历类 System 类 Date 类与String类型转换 Math 类 Random:类

 

 对象数组:存储对象的一个数组:

   Student[] student = new Student[5] ;  

 Arrays:针对数组操作的工具类  (提供了一些针对数组排序和二分搜索法)

  public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,    元素3...])

    public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序

  public static int binarySearch(int[] a,int key):二分搜索法: int类型的数组中查找key元素的索引

public class ArraysDemo {

public static void main(String[] args) {

//定义一个数组:静态初始化

int[] arr = {24,69,80,57,13} ;

//public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])

//直接用Arrays去调用

String str = Arrays.toString(arr) ;

System.out.println("str:"+str);

//[24, 69, 80, 57, 13]

System.out.println("-----------------------");

// public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序

Arrays.sort(arr);

String str2 = Arrays.toString(arr) ;

System.out.println("str2:"+str2);

System.out.println("-----------------------");

//public static int binarySearch(int[] a,int key):二分搜索法:

//int类型的数组中查找key元素的索引

//需求:查找57元素对应的索引

Arrays.sort(arr);

int index = Arrays.binarySearch(arr, 57) ;

System.out.println("index:"+index);

int index2 = Arrays.binarySearch(arr, 577) ;

System.out.println("index2:"+index2);

 

 Calendar为:日历类 

需要导入import java.util.Calendar;包

Calendar 是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法

//创建日历类的对象时Calendar rightNow = new Calendar() ; 会报错,因为Calendar不能实例化,正确的创建方式为Calendar rightNow = Calendar.getInstance() ;

//public int get(int field)返回给定日历字段的值

//获取年:public static final int YEAR              int year = rightNow.get(Calendar.YEAR) ;

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

//public static final int DATE :获取月份的那一天      int date = rightNow.get(Calendar.DATE) ;

Calendar中的两个常用方法:

 public abstract void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量 (这个方法常用)

例句:

Calendar c = Calendar.getInstance() ;//算出当前时间

                c.add(Calendar.YEAR, -3);//求出3年前的今天(用+-号代表前后

public final void set(int year, int month,int date)设置日历字段 YEARMONTH DAY_OF_MONTH 的值

例句:

c.set(2018, 5,20);// 设置时间为2018, 5,20

                c.get(Calendar.YEAR).get(Calendar.MONTH)c.get(Calendar.DATE);//链式获取设置后的年月日

System 类包含一些有用的类字段和方法。它不能被实例化。

 用的方法:

public static void gc()运行垃圾回收器。

(System.gc(); //运行垃圾回收器,实质是执行的finalize()方法) 

public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;  一般情况,需要终止Jvm,那么参数0

public static long currentTimeMillis()返回以毫秒为单位的当前时间

 例如:long time = System.currentTimeMillis() ;

System.out.println("tiem:"+time);

//单独使用,没有意义

//一般情况,来测试一段代码的执行效率,system输出代码的执行时间。 

 System 中的arraycopy()方法

public static void arraycopy(Object src,int srcPos, Object dest,int destPos, int length)

从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束

src:原数组

dest:目标数组

srcPos :从原数组的哪个位置开始

destPos:到目标数组的哪个位置结束

length:长度

 Date 类表示特定的瞬间,精确到毫秒

java.util.Date:

构造方法:

  public Date()表示分配它的时间(精确到毫秒)。

  public Date(long date):创建一个日期对象,指定毫秒值(需要将long 时间毫秒值转换成Date对象)

 public void setTime(long time):设置毫秒值

例句:

Date d = new Date() ;

System.out.println(d); //Date类型的日期格式:Sun Apr 29 11:22:47 CST 2018

 重点:Date的日期格式和日期的文本格式:String类型 之间进行转换 

  Date---->String(格式化)

       例句://Date---String:(格式化)

Date d = new Date() ;//创建一个日期对象

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");//创建SimpleDateFormat类对象

String str = sdf.format(d) ;//public final String format(Date date):格式化

System.out.println("str:"+str);

  String-->Date(解析)

   中间的转换:使用中一个中间类:DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:

  SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

   SimpelDateFormat的构造方法:

   public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)

   SimpleDateFormat sdf = new SimpleDateFormat("xxxxxxx") ;

例句://String:日期文本格式:---->Date:日期格式

String strDate = "2018-6-25" ; //public Date parse(String source):解析

//创建SimpleDateFormat类对象

//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd") ;

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;

//注意 :simpleDateFormat在解析文本格式的时候,里面 模式(规则)一定要和文本格式的模式一直,否则就出现PareseException

Date dd = sdf2.parse(strDate) ;

System.out.println("dd:"+dd);//dd:Mon Jun 25 00:00:00 CST 2018

   日期和时间模式

  

    : yyyy

   : MM

    : dd

   

    : hh

    : mm

   : ss

 

 实际开发中:牵扯时间的东西,经常Date--String  String--Date

 这一个将字符串文本日期格式转换Date的日期格式的功能

  @param format  模式

  @param s  需要被解析的日期文本格式

  @return 返回的就Date日期格式

  @throws ParseException 解析如果出问题了,就会有这个异常

Math 包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。  

 常用的方法:

  public static int abs(int a):绝对值

例句:System.out.println(Math.abs(-10));

System.out.println(Math.abs(10));

  public static double ceil(double a):向上取整

              例句:System.out.println(Math.ceil(12.34));

  public static double floor(double a):向下取整

例句:System.out.println(Math.floor(12.34)); 

public static int max(int a,int b):求最大值

例句System.out.println(Math.max(10, 20));

//方法中嵌套方法

//方法递归(方法本身调用方法的这种现象)

System.out.println(Math.max(Math.max(10, 20), 20));

public static int min(int a,int b):求最小值

public static double pow(double a,double b):ab次幂

例句:System.out.println(Math.pow(2.0, 3.0));//打印值为8

  public static double random()

例句:System.out.println(Math.random());返回带正号的 double 值,该值大于等于0.0且小于1.0

  public static int round(float a):四射五入

例句:System.out.println(Math.round(12.56));

  public static double sqrt(double a):一个数的正平方根

例句:System.out.println(Math.sqrt(4));

 JDK5的特性:静态导入(导入方法的级别)

//面试题:有两个变量,让他们的值进行互换 (考官想问的是:你能否指定位^的特点)

int a = 10 ;

int b = 20 ;

//实际开发中:中间变量的方式进行互换

//^的特点:一个数据被另一个数据位^两次,其值是它本身

/*System.out.println(a^b^b);

System.out.println(a^b^a);*/

System.out.println("a:"+a+",b:"+b);

//=号左边: a ,b,a

//=右边: a^b

a = a ^ b ;

b = a ^ b ;//b = a^b ^ b

a = a ^ b ;

System.out.println("a:"+a+",b:"+b);

Random:是一个可以获取随机数的类

 public Random():无参构造方法

 public Random(long seed) :指定long类型的数据进行构造随机数类对象

 public int nextInt():获取随机数,它的范围是在int类型范围之内

 public int nextInt(int n):获取随机数,它的范围是在[0,n)之间

例句:Random r = new Random() ;

     for(int x = 0 ; x < 10 ; x ++) {

     int n = r.nextInt(5) ;

     System.out.println(n);

      }

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值