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

news2024/11/16 3:36:25

包装类

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

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

        //false


        Integer i5= new Integer(127);
        Integer i6 = new Integer(127);
        System.out.println(i5==i6);

        //false

        Integer 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月就的写2
        nowTime.add(Calendar.DAY_OF_MONTH,-1);//用加的方法 加-1
        int day1 = nowTime.get(Calendar.DAY_OF_MONTH);
        System.out.println(day1);//29
        
        



        //JDK8
        LocalDate ld1 = LocalDate.of(2000, 3, 1);
        LocalDate ld2 = ld1.minusDays(1);//月份减去1 生成新的日期对象
        int day2 = ld2.getDayOfMonth();
        System.out.println(day2);//29
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5年经验之谈 —— 手把手教你接口性能测试之工具篇!

本文是我们《手把手教你接口性能测试》系列文章中的中篇&#xff0c;主要介绍软件测试工作中常用的一些接口测试工具。 一、接口都有哪些类型&#xff1f; 1、接口一般分为两种&#xff1a; 1.程序内部的接口 2.系统对外的接口 程序内部的接口 方法与方法之间&#xff0c;模…

最靠谱的nvm安装教程 for mac

nvm是node 版本管理工具 一、前提 1、保证自己的mac电脑上没安装node环境 2、保证自己的电脑上有安装git&#xff0c;不然下载nvm时会报错。 git下载可以参考&#xff1a; 1&#xff09;佛系安装&#xff1a;通过提示下载 XCode 2&#xff09;brem安装 3&#xff09;终极大法&…

Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)

问题描述 不知道大伙是如何安装 K8s&#xff0c;特别还是集群的时候&#xff0c;我上一次安装搭建的时候&#xff0c;那个恶心到我了&#xff0c;真的是一步一个脚印走完整个搭建流程&#xff0c;爬了不少坑。 于是&#xff0c;才有了今天的文章&#xff0c;到底有没有可以一…

在mybatis的xml中使用枚举来做判断条件

1.枚举类 import com.baomidou.mybatisplus.annotation.IEnum; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.shinkeer.common.utils.StringUtils;import java.util.HashMap; import java.util.Map;…

日志logback详解

该篇博客是我参考了很多博客总结出来的&#xff0c;内容很多&#xff0c;你能看完不睡着算你厉害&#xff01; 一、日志框架发展史 二、日志规范 三、日志级别 四、Logback 4.1 Maven引入 4.2 logback-spring.xml是在哪里加载的&#xff1f; 4.3 logback.xml和logback-s…

err -110 while initial SD card failed enmmm否系解决方案

1.情况表述 之前把 sd卡从小容量换成了大容量 且运行正常 过了一两个月 发现启动失败 报错&#xff1a;mmc0: error -110 whilst initialising SD card 给出报错图片 2.相关解决方案 给出链接 讲的很有道理&#xff0c;但是 我在bash中没有找到对应内核的驱动文件 SD卡…

抖音SEO优化怎么做?详细的方法来了,搭配批量剪辑让效果更优

抖音作为一个非常受欢迎的短视频平台&#xff0c;无论是用户还是内容创作者&#xff0c;体量都越来越大&#xff0c;这意味着竞争也越来越大&#xff0c;想要在抖音上获得更多的曝光和关注&#xff0c;做好抖音 SEO 优化是一门必修课。 抖音 SEO 优化是指优化我们发布到抖音平…

AMEYA360:瑞萨电子转矩控制解决方案加强工业自动化

随着科技的不断进步和全球制造业的竞争加剧&#xff0c;越来越多的企业开始投资和采用自动化技术&#xff0c;以提高生产效率、降低成本、改善产品质量并确保过程安全。而为协同工作完成复杂任务&#xff0c;确保高质量的生产结果。工业自动化设备对精度控制要求非常高&#xf…

Redis底层核心数据结构详解

文章目录 一、深入String&#xff08;SDS&#xff09;1. 字符串简介2. SDS存在的意义3. SDS结构设计4. SDS与C字符串的区别4.1 常数复杂度获取字符串长度4.2 杜绝缓冲区溢出4.3 二进制安全4.4 SDS API 5 小结 二、深入List (QuickList)1. 链表节点结构设计2. Redis的链表实现的…

linux驱动开发led绑定亮灯

head.h 应用程序 驱动程序 结果

LabVIEW基于机器视觉的钢轨表面缺陷检测系统

LabVIEW基于机器视觉的钢轨表面缺陷检测系统 机器视觉检测技术和LabVIEW软件程序&#xff0c;可以实现轨道工件的表面质量。CMOS彩色工业相机采集的图像通过图像预处理、图像阈值分割、形态分析、特征定位和图案匹配进行处理和分析。图形显示界面采用LabVIEW软件编程设计&…

【大模型的一些基本结论】

这里写自定义目录标题 LLama的一些基本结论 各个论文中给出一些观察显现&#xff0c;我们比摘要更简略地摘要一些文本大模型大佬地基本结论和观察到的现象 LLama的一些基本结论 由于大模型要作为服务&#xff0c;因而推理时间更重要。一个较小的、训练时间较长的模型最终会在…

GLIP,FLIP论文阅读

Scaling Language-Image Pre-training via Masking&#xff08;FLIP&#xff0c;2023&#xff09;&#x1f44d; 贡献&#xff1a; 1.图像端引入MAE的随机MASK&#xff0c;image encoder只处理未mask的patches&#xff08;和之前的MAE方法一致&#xff09;&#xff0c;减少了输…

5年经验之谈 —— 手把手教你接口性能测试之JMeter性能测试篇!

本文是我们《手把手教你接口性能测试》系列文章中的完结篇&#xff0c;介绍如何使用JMeter工具进行接口测试和并发测试。 一、Jmeter 简介 Jmeter是由Apache公司开发的一个纯Java开源项目&#xff0c;即可以用于做接口测试也可以用于做性能测试&#xff0c;具备高移植性和扩展…

QUIC协议包头保护(四)

一&#xff1a;为什么要有包头保护 学过HTTP和HTTPS都知道&#xff0c;随着网络的普及&#xff0c;人们对于信息的保护&#xff0c;个人的隐私越发的重视。信息加密对于未来协议的发展肯定是越来越趋于严格。QUIC作为新生代的协议&#xff0c;必然要站着前辈的肩膀上发展&#…

基于Python实现的复制、移动、离线化你的 Markdown 文档,清理 Markdown 引用路径中的垃圾文件

Markdown 工具箱 完整代码下载地址&#xff1a; Markdown 工具箱 &#x1f6a9; 简介 Markdown 工具箱&#xff0c;是我为 Markdown 笔记管理做的一个工具集。目前有以下几个功能&#xff1a; 复制 批量将 md 笔记&#xff08;连带它的相对路径引用的图片、附件&#xff09;…

c#中使用stringbuilder的Append方法写sql语句

c#中使用stringbuilder的Append方法写sql语句 c#中使用stringbuilder的Append方法写sql语句_c#strsql.append_安静点DGC的博客-CSDN博客https://blog.csdn.net/qq_26925297/article/details/81586884 特此记录 anlog 2023年8月8日

PMP考试中有哪些疑点、难点?

目前PMP考试的内容只有最后5个月是按照旧考纲&#xff0c;后面的考试基本上都是按照新考纲进行。因此&#xff0c;备考的朋友们需要学习很多新的知识点和敏捷学习方法。所以现在是给今年想要备考的朋友们提供学习建议的时候了。 01、新版考纲将主要关注以下三个新领域&#xf…

一、XSS加解密编码解码工具

一、XSS加解密编码解码工具 解释&#xff1a;使用大佬开发的工具&#xff0c;地址&#xff1a;https://github.com/Leon406/ToolsFx/blob/dev/README-zh.md 在线下载地址&#xff1a; https://leon.lanzoui.com/b0d9av2kb(提取码&#xff1a;52pj)&#xff08;建议下载jdk8-w…

每天一道算法题——动态规划

找到工作就不更新了~ 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a; 2 输出&#xff1a; 2 解释&#xff1a; …