DAY 12

回顾内容:

1 StringBuffer:字符串缓冲区,线程安全的一个类,同步,执行效率低;

在单线程程序中使用StringBuilder来替代StringBuffer这个类--->StringBuilder线程不安全,不同步,执行效率高

跟线程安全有关的类:

StringBuffer,集合:Vector<一种引用类型>,Hashtable<K,V>

String:字符串类型:spilt(String regex):切割功能

StringBuffer常用的构造方式:

StringBuffer(String str):

成员方法:

reverse()反转功能

substring(int begin):从指定位置默认截取到末尾

sbstring(int begin,int end):指定位置截取到指定位置结束,包前不包后!

toString():StringBuffer类型转换成String类型

append(任何的数据类型)

StringBufferString之间的类型转换:

String--->StringBuffer

StringBuffer通过它的构造方式:StringBuffer sb = new StringBuffer() ;

    Sb.append(hello) ;

StringBuffer--->String

StringBuffer buffer = new StringBuffer(hello) ;

String str = new String(buffer) ;

 

StringStringBuffer作为形式参数传递:

String作为形式参数它的效果和基本数据类型是一致的;也就是说形参的改变对实际参数没有影响

StringBuffer:形参的改变会直接影响实际参数 =

 

2 Integer

常用的构造方式

Integer(int i)

Integer(String str):注意:str只能是数字字符串,如果不是数字字符串,NumberFormatException:数字格式化异常

int类型自动装箱Integer类型,引用类型,作用:intString类型之间相互转换

    int--->String:   valueOf(int/char/double/Object对象):String.valueOf(int a) ;

valueOf():参数可是是任意的类型,将任意类型转换成String类型

String-->int:    parseInt(String str):可以将String--->直接转换成int类型

String-->long: parseLong() ;....

JDK5.0以后有特性:自动拆装箱,枚举,静态导入,可变参数,增强for循环...

自动拆装箱:int---->Integer类型:自动装箱

      Integer-->int:自动拆箱

Integer类型将一个具体的数据直接赋值的形式:有缓冲区:-128~127

Integer  i1 = 150;

Integer  i2 =  150 ;

 

3 Character:

Char类型的包装类类型,里面提供一些判断功能;

Character(char ch)

常用的三个判断功能:

isLowerCase(char ch):判断当前字符是否是小写字母字符

isUpperCase(char ch):判断当前字符是否是大写字母字符

isDigit(char ch):判断当前字符是否是数组字符

4 数组的高级排序:

冒泡排序

两个两个比较,大的往后方法,第一次比较完毕,最大值出现在最大索引处,依次这样进行,就可以得到一个排好序的数组:

选择排序

二分查找(折半查找):二分搜索法

 

 

 

DAY 12

 1 选择排序:

 数组的0索引依次和后面的索引进行比较,对应的元素小的往前方法,依次比较,就可以得到一个排好序的数组

public class ArrayDemo {

public static void main(String[] args) {

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

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

//排序前

System.out.println("排序前:");

printArray(arr) ;

/*//第一次比较

int x = 0 ;

for(int y = x +1 ;y < arr.length ; y ++){

//判断

if(arr[y]<arr[x]){//后面的索引对应的元素小于前面索引对应的元素,互换

//第三方变量

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

System.out.println("第一次比较后:");

printArray(arr) ;

//第二次比较

x = 1 ;

for(int y = x +1 ;y < arr.length ; y ++){

//判断

if(arr[y]<arr[x]){

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

System.out.println("第二次比较后:");

printArray(arr) ;

//第三次比较

x = 2 ;

for(int y = x +1 ;y < arr.length ; y ++){

//判断

if(arr[y]<arr[x]){

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

System.out.println("第三次比较后:");

printArray(arr) ;

//第四次比较

x = 3 ;

for(int y = x +1 ;y < arr.length ; y ++){

//判断

if(arr[y]<arr[x]){

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

System.out.println("第四次比较后:");

printArray(arr) ;*/

快捷方法二

//重复度高,代码臃肿,所以循环改进

/* for(int x = 0 ;x < arr.length-1 ;x++){

for(int y = x +1 ; y<arr.length ; y++){

//判断

if(arr[y]<arr[x]){

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

}*/

//调用

selectSort(arr) ;

System.out.println("排序后:");

printArray(arr) ;

}

 

//将选择排序的代码封装成一个独立的功能

public static void selectSort(int[] arr){

for(int x = 0 ;x < arr.length-1 ;x++){

for(int y = x +1 ; y<arr.length ; y++){

//判断

if(arr[y]<arr[x]){

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

}

}

//遍历数组的功能

public static void printArray(int[] arr){

System.out.print("[");

//遍历数组

for(int x = 0 ; x < arr.length ; x ++){

//判断是否最大索引

if(x==arr.length-1){

System.out.println(arr[x]+"]");

}else{

System.out.print(arr[x]+", ");

}

}

}

}

 

 

2 二分查找法

之前查找元素第一次在数组中出现的索引,基本查找法(从头查到尾)

二分查找:针对数组一定有序的

定义一个数组:

 11,22 ,33 ,44 ,55 ,66 ,77  

解决思路:

1)定义最小索引和最大索引

2)计算出中间索引

3)拿中间索引对应的元素和要查找的元素进行比较

如果相等:直接返回中间索引

不相等:大了,左边找  小了,右边找

4)重新获取最小索引和最大索引,计算出中间索引

5)回到3)继续查找

public class ArrayDemo {

public static void main(String[] args) {

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

int[] arr = {11,22,33,44,55,66,77} ;

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

int index = getIndex(arr, 33) ;

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

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

//如果查找的这个元素在数组中查不到呢?

int index2 = getIndex(arr, 333) ;

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

}

 两个明确:

 明确返回值类型:int类型

 明确参数类型,几个参数:int[] arr,int value

public static int getIndex(int[] arr,int value){

//定义最大索引和最小索引

int max = arr.length -1 ;

int min = 0 ;

//计算中间索引

int mid = (max + min)/2 ;

//拿中间索引对应的元素和要查找的value元素进行比较

while(arr[mid] =value){

//当前mid索引对应的元素不等于value元素,分两种情况

if(arr[mid]>value){

//重新获取最大索引

 max = mid -1 ;

}else if(arr[mid]<value){

min = mid +1 ;

}

//如果找不到了应该返回-1

//判断

if(min>max){

return -1 ;

}

//重新获取最大和最小索引,计算中间索引

mid = (max+min)/2 ;

}

return mid ; //如果直接相等,直接返回

}

}

课堂练习:

int arr [24,69,80,57,13]

查找80这个元素在数组中的索引

讲数组进行排序

现在得到这个索引已经发生变化了,由于排序,改变了原来是数组中元素的顺序,所以遇到这种情况,就不要使用二分查找,就是用最基本的查找方法(从头查到尾)

public class ArrayTest {

public static void main(String[] args) {

//定义一个数组

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

//首先对数组排序

selectSort(arr) ;

//排序后在查找

int index = getIndex(arr, 80) ;

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

}

//选择排序

public static void selectSort(int[] arr){

for(int x = 0 ; x < arr.length-1 ;x ++){

for(int y = x +1 ;y<arr.length ; y++){

// 判断

if(arr[y]<arr[x]){

int temp = arr[x] ;

arr[x] = arr[y] ;

arr[y] = temp ;

}

}

}

}

//二分查找法

public static int getIndex(int[] arr,int value){

//定义最小索引和最大索引

int min = 0 ;

int max = arr.length -1 ;

//计算中间索引

int mid = (max+min)/2 ;

while(arr[mid]!= value){

if(arr[mid] > value){

//重新获取索引

//左边找

max = mid -1 ;

}else if(arr[mid]<value){

//右边找

min = mid +1 ;

}

//找不到返回-1

if(min >max){

return -1 ;

}

//重新计算中间索引

mid = (max +min)/2 ;

}

return mid ;

}

//遍历数组

public static void printArray(int [] arr){

//输出左中括号

System.out.print("[");

for(int x = 0 ; x < arr.length ; x ++){

if(x==arr.length -1){

System.out.println(arr[x]+"]");

}else{

System.out.print(arr[x]+", ");

}

}

}

}

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

 常用的几个方法:

 public static String toString(int[] a):将任意类型的数组以字符串形式显示出来!

 public static void sort(int[] a):快速排序:(将给定数组中元素升序排序)

 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

}

}

 对字符串中的字符进行排序。

  举例:"dacgebf"

   结果:"abcde

  改进:键盘录入一个字符串

public class ArrayTest{

public static void main(String[] args) {

//创建键录入对象

Scanner sc = new Scanner(System.in) ;

//录入并接收数据

System.out.println("请你输入一个字符串:");

String line = sc.nextLine();

//将字符串转换字符数组

char[] chs = line.toCharArray() ;

//给字符数组进行冒泡排序

bubbleSort(chs) ;

//最终要的是字符串,还需要将字符数组转换成字符串

String result = String.valueOf(chs) ;

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

}

public static void bubbleSort(char[] chs){

for(int x = 0 ; x < chs.length-1 ; x ++){

for(int y = 0 ; y <chs.length-1-x ; y++){

if(chs[y]>chs[y+1]){

//中间变量互换

char temp = chs[y] ;

chs[y] = chs[y+1] ;

chs[y+1] = temp ;

}

}

}

}

}

4 bigdecimal_

对于浮点类型的数据类说,他们存储和整数的存储是不一致的,是按照有效数字位来进行存储的,浮点类型的数据计算的时候容易损失精度,计算出来的结果不精确,Java针对这种情况:提供了这个

 BigDecimal:

 作用:来提供浮点类型数据的精确计算!可变的、任意精度的有符号十进制数

 构造方式:

public BigDecimal(String val)

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);

}

}

//上述计算为非精准结果

 

import java.math.BigDecimal;

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

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 div

isor):

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));

}

}

 

5 BigInteger:用来计算超出了Integer类型范围的数据

import java.math.BigInteger;

public class BigIntegerDemo {

public static void main(String[] args) {

//查看Integer类的最大值

System.out.println(Integer.MAX_VALUE);//2147483647

//创建Integer对象

// Integer i = new Integer("2147483648") ;// java.lang.NumberFormatException: For input string: "2147483648"

//当前该数据已经超出了Integer的取值范围

// System.out.println(i);

BigInteger i = new BigInteger("2147483648") ;

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

}

}

 

 BigInteger的构造方法

 public BigInteger(String val)将字符串表示的数字封装成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数组,数组中的元素:,余数

  

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

}

}

 

 

6  Calendar;

 Calendar:日历类:

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR 等 日历字段之间的转换提供了一些方法,

并为操作日历字段(例如获得下星期的日期)提供了一些方法

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是同义词,表示月份中的某天

 import java.util.Calendar;

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+"");

}

}

 

import java.util.Calendar;

 Calendar常用的成员方法:

 public abstract void add(int field,int amount)

 为给定的日历的字段添加或者减去时间偏移量

 public final void set(int year,int month,int date)

 设置日历字段 YEARMONTH DAY_OF_MONTH 的值

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+"");

}

 

 7  Date:日期类:

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

 常用的构造方式:

 public Date():表示分配的一个Date对象:无参: 通过无参构造获取当前系统的具体的时间

 public Date(long date):指定一个时间毫秒值  和它1970-1-1 00:00:00有时间差

import java.util.Date;

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);

}

}

 

键盘录入一个年份,获取任意一年的二月有多少天

  分析:

   1)创建键盘录入对象,录入某一个年份

   2)获取日历类对象,getInstance()

   3)设置一个日历字段,,,

   日历类对象.set(year,2,1):这里其实表示31

   4)将时间往前推一天

   日历类对象.add(Calendar.DATE,-1) ;

   5)获取DATE月份中的天,输出即可

import java.util.Calendar;

import java.util.Scanner;

public class CalendarTest {

public static void main(String[] args) {

//创建键盘录入对象

Scanner sc = new Scanner(System.in) ;

//录入并接收数据

System.out.println("请您输入一个年份:");

int year = sc.nextInt() ;

//创建日历类对象

Calendar c = Calendar.getInstance() ;

//设置日历的字段,,,

c.set(year, 2, 1) ;//其实月份:(month+1):31

//将时间往前推算一天

c.add(Calendar.DATE, -1) ;

System.out.println("任意一年的二月有:"+c.get(Calendar.DATE));

}

}

import java.util.Date;

 Date中的两个成员方法

public long getTime():获取当前时间毫秒值

 如果知道Date对象,可以通过getTime()获取时间毫秒值

 public void setTime(long time)

import java.util.Date;

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);

}

}

 

 

 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

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

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("yyyyMMdd") ;

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);

}

}

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

这是将DateString相互转换的日期工具类

public class DateUtil {

//将无参构造私有化,为了不让外界创建对象

private DateUtil(){

}

 该方法是将Date日期对象格式化成一个String日期"文本格式"

 d

需要被转换的日期对象

 format

需要转换的时候提供的一种模式

 @return

最终返回的就是日期的文本格式

public static String dateToString(Date d,String format){

// 创建SimpleDateFormat对象

/*SimpleDateFormat sdf = new SimpleDateFormat(format) ;

//格式化

String str = sdf.format(d) ;

return str ;*/

return new SimpleDateFormat(format).format(d) ;

}

 

该方法是将String的日期"文本格式"解析成一个Date日期对象

  s

表示需要被解析的日期文本格式

 format

 表示解析日期文本格式是需要使用的一种模式

 return

返回的就是日期Date对象

 throws ParseException

 抛出解析异常

 

public static Date stringToDate(String s,String format) throws ParseException{

//创建SimpleDateFormat对象

/*SimpleDateFormat sdf = new SimpleDateFormat(format) ;

Date date = sdf.parse(s) ;

return date ;*/

return new SimpleDateFormat(format).parse(s) ;

}

}

 

  日期和String相互转换的一个测试类

public class DateUtilDemo {

public static void main(String[] args) throws ParseException {

//Date--->String

// 创建一个Date对象

Date d = new Date() ;

//调用功能

String str = DateUtil.dateToString(d, "yyyy-MM-dd HH:mm:ss") ;

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

String str2 = DateUtil.dateToString(d, "yyyy-MM-dd") ;

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

String str3 = DateUtil.dateToString(d, "HH:mm:ss") ;

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

//String---->Date

//模式要和字符串文本格式一致

String s = "2018-6-25 16:26:21" ;

//调用功能

Date date = DateUtil.stringToDate(s, "yyyy-MM-dd HH:mm:ss");

System.out.println("date"+date);

}

}

 

 

8 Math类提供了一些数学运行的方法

   常用的成员方法:

   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):ab次幂

  public static double random():取值范围:[0.0,1.0)

   public static long round(double a):四舍五入

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

//import java.util.Scanner;

//JDK5.0以后的新特性;

//import static java.lang.Math.abs; //静态导入()import static(该方法一定是静态方法)

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):ab次幂

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));

}

9 System

import java.util.Scanner;

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

常用的两个字段:

in ,out都和流有关系:java.io...

 

PrintStream(字节打印流) ps = System.out ; 标准输出流

PrintWriter(字符打印流)

InputStream   in =  System.in; 标准输入流

常用的成员方法:

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]

}

}

 

 

重写Object中的finalize()方法

protected void finalize() throws Throwable {

system.out.println("当前垃圾回收器需要回收不用对象了"+this);

super.finalize();

}

 

 

 System里面的常用的成员方法:

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

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

public class SystemDemo2 {

public static void main(String[] args) {

//定义两数组,静态初始化

int[] arr1 = {11,22,33,44,55,66} ;

int[] arr2 = {3,4,5,6,7,8,9} ;

//复制数组

System.arraycopy(arr1, 2, arr2, 1, 2) ;

//分别将arr1 arr2数组以字符串形式显示出来

System.out.println("arr1:"+Arrays.toString(arr1));

System.out.println("arr2:"+Arrays.toString(arr2));

/arr1:[11, 22, 33, 44, 55, 66]

 arr2:[3, 33, 44, 6, 7, 8, 9]/

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值