包裝類
基本數據類型對應的應用類型。
jdk5以后對包裝類新增了:自動拆箱、自動裝箱
我們以后如何獲取包裝類對象:
不需要new,不需要調用方法,直接賦值即可
package MyApi.a09jdkdemo;public class A_01IntergerDemo1 {public static void main(String[] args) {//1.把整數轉成二進制String s1 = Integer.toBinaryString(100);System.out.println(s1);//2.把整數轉成八進制String s2 = Integer.toOctalString(100);System.out.println(s2);//3.把整數轉成十六進制String s3 = Integer.toHexString(100);System.out.println(s3);
//4.將字符串類型的整數轉成int類型的整數//強類型語言:每種數據在java中都有各自的數據類型//在計算的時候,如果不是同一種數據類型,是無法直接計算的int i = Integer.parseInt("100");System.out.println(i);System.out.println(i+1);
//細節1//在類型轉換的時候,括號的參數只能是數字不能是其他,否則代碼會報錯//細節2//8種包裝類中,除了charcter都有對應的parsexx的方法,進行類型轉換String str="true";boolean b=Boolean.parseBoolean(str);System.out.println(b);}
}
綜合練習
鍵盤錄入
鍵盤錄入一些1-100之間的整數,并添加到集合中。直到集合中所有數據和超過200為止。
package MyApi.a09jdkdemo.a04test;import java.util.ArrayList;
import java.util.Scanner;public class Test1 {public static void main(String[] args) {ArrayList<Integer> arrayList=new ArrayList<>();Scanner sc=new Scanner(System.in);while (true){System.out.println("請輸入一個整數");String s = sc.nextLine();int num= Integer.parseInt(s);if(num<1||num>100){System.out.println("當前數字不在1-100的范圍當中,請重新輸入");continue;}//添加到集合arrayList.add(num);//統計集合中所有的數據和int sum=getSum(arrayList);//對sum進行判斷if(sum>200){System.out.println("集合中所有的數據和已經滿足要求");break;}}for (int i = 0; i < arrayList.size(); i++) {System.out.println(arrayList.get(i)+",");}}private static int getSum(ArrayList<Integer> arrayList) {int sum=0;for (int i = 0; i < arrayList.size(); i++) {int num=arrayList.get(i);sum=sum+num;}return sum;}
}
算法水題
自己實現parseInt方法的效果,將字符串形式的數據轉成整數。
要求:字符串中只能是數字不能有其他字符,最少一位,最多10位,0不能開頭。
package MyApi.a09jdkdemo.a04test;public class Test2 {public static void main(String[] args) {//定義字符串String str="123456789";//2.校驗字符串if(!(str.matches("[1-9]\\d{0,9}"))){//錯誤的數據System.out.println("數據格式有誤");}else {System.out.println("數據格式正確");//定義一個變量表示最終的結果int num=0;//遍歷字符串得到里面的每一個字符for (int i = 0; i < str.length(); i++) {int c= str.charAt(i)-'0';//把每一位數字放到num中num=num*10+c;}System.out.println(num);}}
}
定義一個方法自己實現toBinaryString方法的效果,將一個十進制整數轉換成字符串表示的二進制。
package MyApi.a09jdkdemo.a04test;public class Test3 {public static void main(String[] args) {System.out.println(toBinaryString(123));}public static String toBinaryString(int number){//核心邏輯:不斷的去除以2,得到余數,知道商為0為止//把余數倒著拼接//定義stringBuilder用來拼接余數StringBuilder sb=new StringBuilder();while (true){if (number==0){break;}//獲取余數int reaindar=number%2;//倒著拼接sb.insert(0,reaindar);System.out.println(reaindar);//除以2number=number/2;}return sb.toString();}}
請使用代碼實現計算你活了多少天,用jdk7和jdk8兩種方式完成。
package MyApi.a09jdkdemo.a04test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Date;public class Test4 {public static void main(String[] args) throws ParseException {//JDK7//規則:只要對時間進行計算或者判斷,都需要獲取當前時間的毫秒值//1.計算出生年月日的毫秒值String birthday="2000年1月1日";SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");Date date = sdf.parse(birthday);long birthdaytime = date.getTime();//當前時間long todayTime = System.currentTimeMillis();//3.計算間隔多少天long time=todayTime-birthdaytime;System.out.println(time/1000/60/60/24);//JDK8LocalDate ld1=LocalDate.of(2000,1,1);LocalDate ld2=LocalDate.now();long day = ChronoUnit.DAYS.between(ld1, ld2);System.out.println(day);}
}
判斷任意的一個年份是閏年還是平年
要求:用jdk7和jdk8兩種方式判斷
提示:二月有29天是閏年
一年有365天是閏年
package MyApi.a09jdkdemo.a04test;import java.time.LocalDate;
import java.util.Calendar;public class Test5 {public static void main(String[] args) {//jdk7Calendar c=Calendar.getInstance();c.set(2000,2,1);c.add(Calendar.DAY_OF_MONTH,-1);int day = c.get(Calendar.DAY_OF_MONTH);System.out.println(day);
//jdk8LocalDate of = LocalDate.of(2000, 3, 1);LocalDate localDate = of.minusDays(1);int dayOfMonth = localDate.getDayOfMonth();System.out.println(dayOfMonth);//true:閏年//false:平年System.out.println(localDate.isLeapYear());}
}