包装类
基本数据类型对应的应用类型。
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());}
}