Java学习笔记(六)——基本数据类型及其对应的包装类

文章目录

    • 包装类
      • 基本数据类型及其对应的包装类
      • 获取Integer对象的方式(了解)
        • 获取Integer对象两种方式的区别(掌握)
      • 包装类的计算:自动装箱和自动拆箱
      • Integer成员方法
      • 综合练习
        • 练习1
        • 练习2
        • 练习3
        • 练习4
        • 练习5

包装类

包装类:基本数据类型对应的引用数据类型。

在这里插入图片描述

集合无法存储基本数据类型,需要用到包装类。

基本数据类型及其对应的包装类

在这里插入图片描述

获取Integer对象的方式(了解)

在这里插入图片描述

public class test30 {public static void main(String[] args) {Integer i0 = new Integer(10);Integer i1 = new Integer("123");Integer i2 = Integer.valueOf(10);Integer i3 = Integer.valueOf("145");Integer i4 = Integer.valueOf("110", 2);System.out.println(i0);  //10System.out.println(i1);  //123System.out.println(i2);  //10System.out.println(i3);  //145System.out.println(i4);  //6}
}
获取Integer对象两种方式的区别(掌握)
public class test31 {public static void main(String[] args) {Integer i1=new Integer(127);Integer i2=new Integer(127);System.out.println(i1==i2);  //falseInteger i3=new Integer(128);Integer i4=new Integer(128);System.out.println(i3==i4);  //falseInteger i5=Integer.valueOf(127);Integer i6=Integer.valueOf(127);System.out.println(i5==i6);  //trueInteger i7=Integer.valueOf(128);Integer i8=Integer.valueOf(128);System.out.println(i7==i8);  //false}
}

注意:==比较的是地址。

查看源码:

在这里插入图片描述

IntegerCache.low=-128,IntegerCache.high=127

在这里插入图片描述

会先创建【-128-127】的Integer对象放进cache数组,因为实际开发中【-128~127】的数据用的比较多

在这里插入图片描述

包装类的计算:自动装箱和自动拆箱

在JDK5的时候提出了一个机制:自动装箱和自动拆箱。

自动装箱:把基本数据类型自动变成其对应的包装类。

自动拆箱:把包装类自动变成其对应的基本数据类型。

public class test32 {public static void main(String[] args) {//自动装箱Integer i=10;//自动拆箱Integer i1=Integer.valueOf(20);int i2=i1;}
}

Integer成员方法

在这里插入图片描述

public class test32 {public static void main(String[] args) {Integer i=10;String binaryString = Integer.toBinaryString(i);String octalString = Integer.toOctalString(i);String hexString = Integer.toHexString(i);String str="123";int i1 = Integer.parseInt(str);}
}

注意:Java是强类型语言,不同数据类型的数据无法直接计算;8种包装类,只有Character没有parseXXX方法。

综合练习

练习1

键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。

import java.util.ArrayList;
import java.util.Scanner;public class test33 {public static void main(String[] args) {//键盘录入一些1~100之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。Scanner sc = new Scanner(System.in);ArrayList<Integer> arrayList = new ArrayList<>();while (true) {String str = sc.nextLine();int in = Integer.parseInt(str);if (in > 100 || in < 0) {System.out.println("非法数据!请输入1~100之间的整数:");continue;}arrayList.add(in);if(sum(arrayList)>200){break;}}}public static int sum(ArrayList<Integer> arrayList) {int sum = 0;for (int i = 0; i < arrayList.size(); i++) {sum += arrayList.get(i);}return sum;}
}
练习2

实现parseInt方法的效果,将字符串形式的数据转成整数。

要求:字符串中只能是数字不能有其他字符,最少一位,最多10位,0不能开头

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class test34 {public static void main(String[] args) {//实现parseInt方法的效果,将字符串形式的数据转成整数。要求:字符串中只能是数字不能有其他字符最少一位,最多10位,0不能开头Scanner sc = new Scanner(System.in);System.out.println("请输入:");while (true) {String str = sc.nextLine();boolean flag = isCharacter(str);if (!flag) {System.out.println("非法输入!");} else if (str.length() > 10) {System.out.println("非法输入!");} else {int sum=0;int k=1;for(int i=0;i<str.length();i++){sum=sum*10+(str.charAt(i)-'0');}System.out.println(sum);}}}public static boolean isCharacter(String str) {String regex = "[1-9]\\d{0,9}";return str.matches(regex);}
}
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class test34 {public static void main(String[] args) {//实现parseInt方法的效果,将字符串形式的数据转成整数。要求:字符串中只能是数字不能有其他字符最少一位,最多10位,0不能开头Scanner sc = new Scanner(System.in);System.out.println("请输入:");while (true) {String str = sc.nextLine();boolean flag = isCharacter(str);if (!flag) {System.out.println("非法输入!");} else if (str.length() > 10) {System.out.println("非法输入!");} else {int sum=0;int k=1;for (int i = str.length()-1; i>=0; i--) {//System.out.println(str.charAt(i));sum+=(str.charAt(i)-'0')*k;k=k*10;}System.out.println(sum);}}}public static boolean isCharacter(String str) {String regex = "[1-9]\\d{0,9}";return str.matches(regex);}
}
练习3

定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制

import java.util.ArrayList;
import java.util.Scanner;public class test35 {public static void main(String[] args) {//定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制Scanner sc=new Scanner(System.in);while (true){int i=sc.nextInt();System.out.println(toBinaryString(i));}}public static String toBinaryString(int i){String str="";ArrayList<Integer> arrayList=new ArrayList<>();int k;  //余数while(i!=0){k=i%2;arrayList.add(k);i=i/2;}for(int j=arrayList.size()-1;j>=0;j--){str=str+arrayList.get(j);}return str;}
}
练习4

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

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.Scanner;
import java.util.regex.Pattern;public class test36 {public static void main(String[] args) throws ParseException {//请使用代码实现计算活了多少天,用JDK7和JDK8两种方式完成Scanner sc = new Scanner(System.in);System.out.println("请输入生日:(格式 yyyy-MM-dd)");while (true) {String str = sc.nextLine();if(str.matches("\\d{1,4}(-)(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31)")){System.out.println("JDK7:" + JDK7(str) + "天");System.out.println("JDK8:" + JDK8(str) + "天");}else {System.out.println("非法输入!");}}}public static long JDK7(String str) throws ParseException {SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(str);Date now=new Date();long time=now.getTime()-date.getTime();return time/(1000*24*60*60);}public static long JDK8(String str) {LocalDateTime now=LocalDateTime.now(ZoneId.of("Asia/Shanghai"));String[] split = str.split("-");LocalDate localDate=LocalDate.of(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));return ChronoUnit.DAYS.between(localDate,now);}}
练习5

判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式

闰年判断:

二月有29天是闰年/一年有366天是闰年

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;public class test38 {public static void main(String[] args) throws ParseException {//判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:二月有29天是闰年一年有366天是闰年Scanner sc = new Scanner(System.in);System.out.println("请输入日期:(格式 yyyy-MM-dd)");while (true) {String str = sc.nextLine();if (str.matches("\\d{1,4}(-)(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31)")) {if (JDK7(str)) {System.out.println("JDK7:");System.out.println("输入的年份是闰年!");} else {System.out.println("输入的年份是平年!");}if (JDK8(str)) {System.out.println("JDK8:");System.out.println("输入的年份是闰年!");} else {System.out.println("输入的年份是平年!");}} else {System.out.println("非法输入!");}}}public static boolean JDK7(String str) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(str);Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.MONTH, 2);  //把日期设置成3月1日calendar.set(Calendar.DAY_OF_MONTH,1);calendar.add(Calendar.DAY_OF_MONTH,-1);  //把日期减1天,看看是几号int day = calendar.get(Calendar.DAY_OF_MONTH);System.out.println(day);if (day == 29) {return true;} else {return false;}}public static boolean JDK8(String str) {String[] split = str.split("-");LocalDate localDate = LocalDate.of(Integer.parseInt(split[0]),3,1);  //把日期设置成3月1日LocalDate localDate1 = localDate.minusDays(1);  //把日期减1天,看看是几号int day = localDate1.getDayOfMonth();System.out.println(day);if (day == 29) {return true;} else {return false;}}
}

闰年判断:

(1)四年一闰百年不闰:即如果year能够被4整除,但是不能被100整除,则year是闰年。

(2)每四百年再一闰:如果year能够被400整除,则year是闰年。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;public class test37 {public static void main(String[] args) throws ParseException {//判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:二月有29天是闰年一年有366天是闰年Scanner sc = new Scanner(System.in);System.out.println("请输入日期:(格式 yyyy-MM-dd)");while (true) {String str = sc.nextLine();if (str.matches("\\d{1,4}(-)(1[0-2]|0?[1-9])\\1(0?[1-9]|[1-2]\\d|30|31)")) {if(JDK7(str)){System.out.println("JDK7:");System.out.println("输入的年份是闰年!");}else {System.out.println("输入的年份是平年!");}if(JDK8(str)){System.out.println("JDK8:");System.out.println("输入的年份是闰年!");}else {System.out.println("输入的年份是平年!");}} else {System.out.println("非法输入!");}}}public static boolean JDK7(String str) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(str);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int year = calendar.get(Calendar.YEAR);//闰年://(1)四年一闰百年不闰:即如果year能够被4整除,但是不能被100整除,则year是闰年。//(2)每四百年再一闰:如果year能够被400整除,则year是闰年。if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {return true;} else {return false;}}public static boolean JDK8(String str) {String[] split = str.split("-");LocalDate localDate=LocalDate.of(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));int year = localDate.getYear();if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {return true;} else {return false;}}
}

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

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

相关文章

Python多线程同步锁

Python同步锁 多线程是共用一个进程空间的&#xff0c;当多个线程要用到相同的数据&#xff0c;那么久会存在资源竞争和锁的问题。 锁是用来实现共享资源的同步访问。为每一个共享资源创建一个Lock对象&#xff0c;当需要访问共享资源的时候&#xff0c;调用acquire方法来获取…

目标检测再升级!YOLOv8模型训练和部署

YOLOv8 是 Ultralytics 开发的 YOLO&#xff08;You Only Look Once&#xff09;物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型&#xff0c;它建立在先前YOLO成功基础上&#xff0c;并引入了新功能和改进&#xff0c;以进一步提升性能和灵活性。它可…

springboot集成cas客户端

Background 单点登录SSO(Single Sign ON)&#xff0c;指在多个应用系统中&#xff0c;只需登录一次&#xff0c;即可在多个应用系统之间共享登录。统一身份认证CAS&#xff08;Central Authentication Service&#xff09;是SSO的开源实现&#xff0c;利用CAS实现SSO可以很大程…

【Python学习】Python学习8-Number

目录 【Python学习】Python学习8-Number 前言在变量赋值时被创建Python支持四种不同的数据类型整型(Int)长整型(long integers&#xff09;浮点型(loating point real values)复数(complex numbers) Python Number 类型转换Python math 模块、cmath 模块Python数学函数Python随…

以太网交换基础

0x00 前言 以为主要的作用的笔记的记忆&#xff0c;所以多为问答的形式进行记录。 什么是以太网&#xff1f; 以太网是一种局域网技术&#xff0c;用于链接终端&#xff0c;进行网络通信。 什么是冲突域&#xff1f; 冲突域是指连接在同一公共介质上的所有节点的集合。 就…

【Leetcode】 447. 回旋镖的数量

文章目录 题目思路代码 题目 447. 回旋镖的数量 思路 问题要求计算平面上所有回旋镖的数量&#xff0c;即找到满足题设条件的点组合 (i, j, k)。回旋镖的定义是指有两个相同的距离&#xff0c;分别从点 i 到 j 和点 i 到 k。具体思路是&#xff1a; 遍历每个点&#xff0c…

【数据结构 | 二叉树入门】

数据结构 | 二叉树入门 二叉树概念&#xff1a;二叉树特点&#xff1a;二叉树的基本形态特殊二叉树满二叉树完全二叉树 二叉树的存储结构二叉树的遍历先序遍历中序遍历后序遍历 计算二叉树的节点个数计算叶子节点的个数树的高度求第k层节点个数 二叉树概念&#xff1a; 如下图…

怎么将营业执照图片转为excel表格?(批量合并识别技巧)

一、为何要将营业执照转为excel表格&#xff1f; 1、方便管理&#xff1a;将营业执照转为excel格式&#xff0c;可以方便地进行管理和整理&#xff0c;快速查找需要的信息。 2、数据处理&#xff1a;Excel可以提供丰富的计算和数据分析功能&#xff0c;转化为excel后方便数据…

12.字符串和正则表达式

使用正则表达式 正则表达式相关知识 在编写处理字符串的程序或网页时&#xff0c;经常会有查找符合某些复杂规则的字符串的需要&#xff0c;正则表达式就是用于描述这些规则的工具&#xff0c;换句话说正则表达式是一种工具&#xff0c;它定义了字符串的匹配模式&#xff08;…

Ubuntu上安装VMware+win11系统手册

Ubuntu安装vmware 下载&#xff1a; Linux 版下载地址&#xff1a;https://www.vmware.com/go/getworkstation-linux 安装&#xff1a; sudo chmod x VMware-Workstation-Full-17.5.0-22583795.x86_64.bundle 执行安装命令&#xff1a; sudo ./VMware-Workstation-Full-17.5.0…

AArch64 memory management学习(二)

提示 该博客主要为个人学习&#xff0c;通过阅读官网手册整理而来&#xff08;个人觉得阅读官网的英文文档非常有助于理解各个IP特性&#xff09;。若有不对之处请参考参考文档&#xff0c;以官网文档为准。AArch64 memory management学习一共分为两章&#xff0c;这是第二章。…

python基础教程八(循环1)

1. while循环 为避免多次重复的代码&#xff0c;我们会用到循环 while (condition): 执行语句 while循环的结构非常简单只要条件满足就一直循环直到&#xff0c;条件不满足为止。 例子如下&#xff1a; x1 while x<100:print(x)x1结果就是最简单的输出1-100的数字 while…

西电期末考点总结

一.“打擂台” 介绍 打擂台用于找到一个数组中的最值问题&#xff0c;先设置一个虚拟擂主&#xff0c;并保证他是“最弱的”&#xff0c;然后遍历数组&#xff0c;找到“更强的”数据&#xff0c;就交换擂主&#xff0c;“打”到最后的“擂主”就是最值数据 相关题目 1004.…

Vant2组件库van-list+Toast下拉加载滚动条回顶问题

目录 List 列表 Toast 轻提示 解决方案 1、不使用 Toast 的 加载提示 2、修改调整 pointer-event 属性值 3、判断是否为第一次加载再使用 背景 &#xff1a; 移动端项目 开发时&#xff0c;有数据长列表展示的场景需求&#xff0c;此时就用到了 Vant2 组件库里面的 <v…

Tsmaster使用笔记整理

选择厂商 根据你所选择的CAN分析仪的厂商&#xff0c;确定你的厂商设备设置。 我一般会选择PEAK&#xff0c;和 ZLG多一点&#xff0c;其他的没有用过。除了上图中的&#xff0c;市面上的CAN分析仪还有CANanlyst、广成科技、创芯科技等&#xff0c;但它们都不能在Tsmaster上使…

电源芯片浪涌电流如何产生?该怎么测试?

对于电源芯片的设计和制造商来说&#xff0c;防止芯片受到电源干扰是非常重要的。为了保障芯片能正常稳定运行&#xff0c;浪涌测试无疑是必要的。本篇文章将全方位为你介绍浪涌电流如何产生以及如何测试的过程。 电源芯片浪涌电流的产生原因 1.开关电源切换和电压突变 在电源开…

ATTCK视角下的信息收集:组策略信息收集

目录 什么是组策略&#xff1f; 本地组策略收集 域组策略收集 组策略存储收集 组策略对象收集 什么是组策略&#xff1f; Windows中的组策略&#xff08;Group Policy&#xff09;是一种管理和配置Windows操作系统的功能&#xff0c;它允许系统管理员对计算机和用户的行为…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户信息修改实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

Qt 6之五:创建菜单

Qt 6之五&#xff1a;创建菜单 Qt是一种跨平台的C应用程序开发框架&#xff0c;它提供了一套丰富的工具和库&#xff0c;可以帮助开发者快速构建跨平台的应用程序&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;和非GUI应用程序。 Qt 6之一&#xff1a;简介、安…

untiy使用http下载资源

文章目录 提醒下载一个资源并保存到本地下载一张图片 提醒 部分API需要将Unity的 Edit/PrejectSetting/Player/OtherSetttings/AConfiguration/ApiCompatibilityLevel 设为.NetFramework 才可以使用 下载一个资源并保存到本地 private IEnumerator DownloadFormServer_IE(st…