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,一经查实,立即删除!

相关文章

状态观测器ESO说明

状态观测器ESO 当我们需要对一个系统进行控制时&#xff0c;我们通常需要知道系统的输入和输出之间的关系。然而&#xff0c;实际系统中的输入信号可能受到噪声和干扰的影响&#xff0c;这使得我们无法准确地知道系统的真实输入信号。扩张状态观测器&#xff08;ESO&#xff0…

Hive学习(14)json解析get_json_object()函数

一、语法 目的&#xff1a;在一个标准JSON字符串中&#xff0c;按照指定方式抽取指定的字符串。 string get_json_object(string <json>, string <path>) 参数说明 json&#xff1a;必填。STRING类型。标准的JSON格式对象&#xff0c;格式为{Key:Value, Key:Val…

Vim基础操作

参考B站UP&#xff1a;正月点灯笼 vim入门教程&#xff08;共3讲&#xff09; 以下总结&#xff0c;部分搬运自评论区&#xff0c;楼主&#xff1a;-不是飞鱼QAQ&#xff0c;修改部分内容。 vim分为 命令 和 编辑 模式 i进入编辑模式&#xff08; - - INSERT - - &#xff09;…

Python多线程同步锁

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

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

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

Linux文件目录结构解析

一、前言 Linux操作系统采用了一种层次化的文件目录结构&#xff0c;这种结构为系统提供了良好的组织和管理文件的方式。下面是一个简单的Linux文件目录结构树&#xff0c;以便更直观地理解 / |-- bin |-- boot |-- dev |-- etc |-- home | |-- user1 | |-- user2 |-- lib…

chromium通信系统-ipcz系统(十)-chromium通信系统-ipcz系统(十一)-mojo binding

关于mojo binding的官方文档为mojo docs。 由于比较复杂&#xff0c;这里只做简单源码分析。 我们知道要实现rpc&#xff0c;必须实现客户端和服务端。 mojo 实现了一套领域语言&#xff0c;通过领域语言描述接口和数据&#xff0c; 再通过特有编译器编译成c代码。 这个过程会…

帮贡排序#洛谷

题目背景 在 absi2011 的帮派里&#xff0c;死号偏多。现在 absi2011 和帮主等人联合决定&#xff0c;要清除一些死号&#xff0c;加进一些新号&#xff0c;同时还要鼓励帮贡多的人&#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…

Android将自定义View保存为Bitmap图片

Android将自定义View保存为Bitmap图片 private void createPdfImg() {//创建待分享的viewView view LayoutInflater.from(getContext()).inflate(R.layout.ecg_pdf_view, null);PdfEcgWaveView waveView view.findViewById(R.id.ecg_wave_view2);PdfEcgWaveView.DATA_PRE_SEC…

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

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

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

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

解决递归问题的六种方法

许多软件工程师在编程面试中遇到递归问题。 如果你想成为善于解决递归问题&#xff0c;学习这6个模板&#xff1a; 1.迭代 任何可以用循环解决的问题也可以用递归解决。 有时候递归提供了一个更简洁和优雅的解决方案&#xff0c;即使效率较低。 范例&#xff1a; - 按逆序遍…

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…

pytorch 分布式 Node/Worker/Rank等基础概念

分布式训练相关基本参数的概念如下: Definitions Node - A physical instance or a container; maps to the unit that the job manager works with. Worker - A worker in the context of distributed training. WorkerGroup - The set of workers that execute the same f…

AArch64 memory management学习(二)

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