对象数组:存储对象的一个数组:
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 类:是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
//创建日历类的对象时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)设置日历字段 YEAR、MONTH 和 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("xxx年xx月xx日") ;
例句://String:日期文本格式:---->Date:日期格式
String strDate = "2018-6-25" ; //public Date parse(String source):解析
//创建SimpleDateFormat类对象
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
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):a的b次幂
例句: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);
}