包装类知识.JDK7,JDK8相关时间类练习

2023-10-24 05:12

本文主要是介绍包装类知识.JDK7,JDK8相关时间类练习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

包装类

包装类:基本数据类型对应的引用类型
在这里插入图片描述
在这里插入图片描述

JDK5之前的Integer包装类 如下 了解即可

i5传入的值 第一个是字符串,第二个是进制数.为83是因为再打印的时将123看成8进制了 然后打印转化为10进制
在这里插入图片描述

区别对比

    public static void main(String[] args) {Integer i1 = Integer.valueOf(127);Integer i2 = Integer.valueOf(127);System.out.println(i1==i2);//true//为什么单单这个是对 下面的不对//因为integer源码  他原理是传入数值  数值在一个范围内(-128到127)就从一个数组中返回integer对象(因为数组中是创建好的直接用就可以了)//如果不在同一个范围内就new一个新的//为什么这样设计//因为在底层开发的时候-128到127的数据用的比较多//如果每次使用都是new新对象太浪费内存//所以提前把这个范围值你的每一个数据都创建好对象//如果用到不会创建新的 而是创建好的对象Integer i3 = Integer.valueOf(128);Integer i4 = Integer.valueOf(128);System.out.println(i3==i4);//falseInteger i5= new Integer(127);Integer i6 = new Integer(127);System.out.println(i5==i6);//falseInteger i7= new Integer(127);Integer i8 = new Integer(127);System.out.println(i7==i8);//false

包装类以前如何计算

把对象进行拆箱 变成基本数据类型
相加
把得到的结果再次进行装箱(变回包装类)

  Integer i9 = Integer.valueOf(1);Integer i99 = Integer.valueOf(10);//把两个相加int i = i9.intValue();int ii = i99.intValue();int result=i+ii;Integer integer=new Integer(result);System.out.println(integer);

非常之麻烦
但在JDK5时提出一个机制
自动装箱和自动拆箱
把基本数据类型会自动其对应的包装类
自动拆箱:把包装类自动变成其对象的基本类型

Integer i1=10;

以上代码就是用了自动装箱.在底层自动调用静态方法valueof得到一个Integer对象 只不过这个动作不需要我们自己操作了

Integer i2=new Integer (10);
int i=i2

自动拆箱 在JDK5以后 int和Integer可以看做时同一个东西 因为在内部可以自动转化

总结

在这里插入图片描述

Integer成员方法

在这里插入图片描述

 public static void main(String[] args) {//把整数转化为二进制二进制String str1 = Integer.toBinaryString(100);System.out.println(str1);//把100转化为二进制  打印结果1100100//八进制String str2 = Integer.toOctalString(100);System.out.println(str2);//144//十六进制String str3 = Integer.toHexString(100);System.out.println(str3);//64//将字符串类型的整数转为int类型的整数String s="123";int i = Integer.parseInt(s);System.out.println(i+1);//124//细节:在类型转换的时候参数只能是数字不能是其他//细节2:每个包装类(除了character)型都有对应的parseXX方法String s1="true";boolean b = Boolean.parseBoolean(s1);System.out.println(b);

parse:字符串转XX类型


在以前我们用Scanner键盘录入的时候 录入带空格的数据很麻烦 录入123 123 输出只有123 因为遇到空格就停止了
解决:

Scanner sc=new Scanner(System.in);String line=sc.nextLine//zhe这样可以接收一整行数据
int i=Integer.parseInt(int);//然后我们想要什么直接转换即可

时间类包装类综合练习

键盘录入一些1到100之间的整数,并添加到集合 知道集合中所有数据和超过200为止

    public static void main(String[] args) {//首相要有一个集合存储数据ArrayList<Integer>list=new ArrayList<>();//循环录入1 到100的数据System.out.println("请输入数据");Scanner sc=new Scanner(System.in);while(true){String s = sc.nextLine();//把录入的数据转化为整数int i = Integer.parseInt(s);//判断如果是1到100以外的不录入集合if(i>100||i<1){System.out.println("输入错误,请输入1到100之间数据");continue;}//把录入的数据添加到集合list.add(i);//写一个方法累加添加到集合的数据int sum =getSum(list);if (sum>200){System.out.println("超过200已满足要求");break;}}}private static int getSum(ArrayList<Integer> list) {int sum=0;for (int i = 0; i < list.size(); i++) {//循环获取索引Integer integer = list.get(i);//得到每一个元素sum=sum+integer;}return sum;}

练习二

自己实现parseint方法的效果,将字符串形式的数据转成整数
要求:字符串中只能是数字不能有其他字符.
最少一位 最多10位
0不能开头

//思路: 现有一个字符串 判断下符合规则
然后遍历得到每一个字符 比如 123456789 -> ‘1’ ‘2’…
然后通过ascii表’1’-'0’的方法得到数字1.因为 在ascii中 '1’对应49 '0’对应48. '2’对应50…
然后得到了每个数据 然后拼接起来
具体操作如下

   public static void main(String[] args) {//思路: 现有一个字符串 判断下符合规则//然后遍历得到每一个字符  比如 123456789 -> '1' '2'...//然后通过ascii表'1'-'0'的方法得到数字1.因为 在ascii中 '1'对应49 '0'对应48. '2'对应50...//然后得到了每个数据 然后拼接起来String s="123456789";boolean matches = s.matches("[1-9]\\d{0,9}");//if(!matches){System.out.println("输入数据非法");}else{System.out.println("合理继续录入");}//用于存储最终数字int num=0;//遍历得到每一个字符for (int i = 0; i < s.length(); i++) {//得到索引int result = s.charAt(i)-'0';//得到了每个元素 然后减去'0'num=num*10+result;//解读  num第一次为0. ×10+result等于1//num为1   ×10+result等于 12//.....}System.out.println(num);System.out.println(num+1);//123456790}

练习3 实现toBinaryString

在这里插入图片描述

   public static void main(String[] args) {//将10进制转化为i二进制//思路 定义一个方法//不断除以2 得到余数 一直到商为零就结束//然后把余数倒着拼接起来System.out.println(toBinaryString(6));}private static String toBinaryString(int number) {StringBuilder stringBuilder=new StringBuilder();//字符串拼接用的while(true){if(number==0){break;}//先得到余数在除int yushu=number%2;//stringBuilder.append(yushu);//拼接起来但是得到的是011  是反着的stringBuilder.insert(0,yushu);//得到110 符合规则 第一个传入从几索引开始拼接 第二个传入要拼接的元素//再除二number=number/2;}return stringBuilder.toString();//转化为字符串形式}
}

练习4

用代码实现计算你活了多少天了,用JKD7和JDK8两种方式完成

    public static void main(String[] args) throws ParseException {//JDK7//规则只要对事件进行计算或者判断先获取毫秒值String birthday="2002年6月6日";SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");Date parse = sdf.parse(birthday);//解析得到对象然后再调用毫秒值long birthdayTime = parse.getTime();long now = System.currentTimeMillis();//获取现在的时间long time = now - birthdayTime;System.out.println(time/1000/60/60/24);//7809//JDK8//获取年月日用LocalDate l1=LocalDate.of(2002,6,6);LocalDate l2 = LocalDate.now();//获取现在的时间long time2 = ChronoUnit.DAYS.between(l1, l2);System.out.println(time2);//7809}

练习5

判断任意年份是闰年还是平年
闰年就是 二月有29天 或者一年有366天满足一个都是闰年

思路把时间设置为2000年3月1号往前减去一天 如果是29就是闰年

{//JDK7有一个日历类可以直接操作年月日Calendar nowTime = Calendar.getInstance();//相当于获取了当前系统时间nowTime.set(2000,2,1);//月份范围为0到11  想获取3月就的写2nowTime.add(Calendar.DAY_OF_MONTH,-1);//用加的方法 加-1int day1 = nowTime.get(Calendar.DAY_OF_MONTH);System.out.println(day1);//29//JDK8LocalDate ld1 = LocalDate.of(2000, 3, 1);LocalDate ld2 = ld1.minusDays(1);//月份减去1 生成新的日期对象int day2 = ld2.getDayOfMonth();System.out.println(day2);//29}

这篇关于包装类知识.JDK7,JDK8相关时间类练习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272933

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

2409wtl,网浏包装

原文 介绍 本教程帮助你用IE引擎构建一个基于WTL,并使用我编写的处理IWebBrowser2接口包装类的迷你浏览器. 因为知道代码可能很难读,因此本教程帮助你逐步开发一个迷你浏览器. 背景 大部分项都与互联网浏览有关.我常用超文本视图使用SDI. 有时,我要用真正的浏览器函数,因此我为IWebBrowser2编写了一个包装器. 此包装类可处理在IE中嵌入的窗口.它还可非常简单的处