1. 包装类

基础数据类型 进行封装 产生一个新的类 (属性 方法 构造器)

基本数据类型 包装类 继承关系

byte Byte Number-->Object

short Short Number-->Object

int Integer Number-->Object

long Long Number-->Object

float Float Number-->Object

double Double Number-->Object

char Character Object

boolean Boolean Object

为什么要有封装类

java是面型对象语言 操作类对象方便

可以放引用数据类型

数组 int[] String[] Student[]

集合 只能装引用数据类型

2. Integer类

public class Test {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE); System.out.println("物极必反");
System.out.println(Integer.MAX_VALUE+1);
System.out.println(Integer.MIN_VALUE-1);
}
}

Integer构造器

public class Test {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE); System.out.println("物极必反");
System.out.println(Integer.MAX_VALUE+1);
System.out.println(Integer.MIN_VALUE-1); Integer i1 = new Integer(12);
System.out.println(i1);
}
}

入参为String的构造器

    public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}

包装类的 装箱 与拆箱

装箱:int 自动转 Integer

拆箱: Integer --> int

如何快速使用快捷键 变量接收

new 类()

alt+enter

再按一次enter

打断点阅读源码

    public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

-128--127之间会去cache缓存里面取 之外的才会new对象

compareTo方法

    public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

x<y -1

x==y 0

x>y 1

public class Test04 {
public static void main(String[] args) {
//compareTo
Integer integer = new Integer(6);
Integer integer2 = new Integer(12); System.out.println(integer.compareTo(integer2));
}
}
package com.msb2;

/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 16:54
* @Description: com.msb2
* @version: 1.0
*/
public class Test04 {
public static void main(String[] args) {
//compareTo
Integer integer = new Integer(6);
Integer integer2 = new Integer(12); System.out.println(integer.compareTo(integer2)); Integer integer3 = new Integer(12);
Integer integer4 = new Integer(12);
System.out.println(integer3 == integer4);//对地址的比较 两个不同的对象 返回false
System.out.println(integer3.equals(integer4));//对封装的value的比较 true //自动装箱 int-->Integer
//装箱 int自动转Integer对象可以具备很多方法
//只有装箱后才有 equal... 才具有很多类的很多方法 供调用
Integer i5 = 4;
Integer i6 = 4;
System.out.println(i5 == i6);//这里为啥返回true 在 -128--127之间 指向的是缓存里面的同一个对象
System.out.println(i5.equals(i6)); //true Integer i7 = 130;
Integer i8 = 130;
System.out.println(i7 == i8);//这里为啥返回false // 不在 -128--127之间
System.out.println(i7.equals(i8)); //true }
}

Integer --> int 拆箱 只保留里面有用的value 其他的都不要扒掉 仅仅暴露本原


Integer i9 = 130; //装箱
int i10 = i9.intValue(); //方式1 int i11 = Integer.parseInt("120");//方式2 System.out.println(i9.toString());

3.util.date

public class Test {

    public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(date.toString());
System.out.println(date.toGMTString());
System.out.println(date.toLocaleString()); System.out.println(date.getYear());//1200开始
System.out.println(date.getMonth());//开始月为0 System.out.println(date.getTime());// 1970-1-1 00:00:00 到现在的时间 ms为单位
System.out.println(System.currentTimeMillis());//系统时间 // 常用的还是System.currentTimeMillis()
// 计算代码的运行时间
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
System.out.println(i);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime); }
}

4. java.sql.Date

package com.msb;

import java.sql.Date;

/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 17:20
* @Description: com.msb
* @version: 1.0
*/
public class Test02 {
public static void main(String[] args) {
// java.sql.Date
Date d = new Date(1592055964263L); System.out.println(d);
/*
1. java.sql.Date extends java.util.Date
2. 输出
sql.Date 年月日
util.Date 年月日 时分秒 */
java.util.Date d2 = new java.util.Date();
System.out.println(d2.toLocaleString()); //转换 向下 转型 util.Date--sql.Date 父类转子类
java.util.Date d3 = new Date(1592055964263L);// 多态 父类指向子类的引用
Date d4 = (Date)d3; // Date 为java.sql.Date; /*
Animal a = new Dog();
Dog d = (Dog) a;
* */
Date d5 = new Date(d3.getTime());// d3 为util.Date对象 Date d6 = new Date(1592055964263L);// sql.Date
java.util.Date d7 = d6; Date d9 = Date.valueOf("2023-09-17");
System.out.println(d9);
}
}

5. SimpleDateFormat

String --> java.util.Date

package com.msb;

/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 21:36
* @Description: com.msb
* @version: 1.0
*/
public class Test03 { public static void main(String[] args) {
// java.sql.Date d = java.sql.Date.valueOf("2023-09-17 19:01:01");
// java.sql.Date d = java.sql.Date.valueOf("2023/09/17");
java.sql.Date d = java.sql.Date.valueOf("2023-09-17");
java.util.Date d2 = d; System.out.println(d2.toString());
}
}

注:上面的代码有局限性 只能转 yyyy-MM-dd 这样的形式的日期

学习新的类 SimpleDateFormat

见名知意 用于日期的简单转换

package com.msb;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; /**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 21:43
* @Description: com.msb
* @version: 1.0
*/
public class Test04 { public static void main(String[] args) {
// SimpleDateFormat 继承 DateFormat-抽象类
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //String --> Date
Date d = null;
try {
d = simpleDateFormat.parse("2023-10-01 10:00:00");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(d); // Date-->String
String s = simpleDateFormat.format(new Date());
System.out.println(s); Date d2 = new Date();
System.out.println(d2.toString());
System.out.println(d2.toLocaleString());
System.out.println(d2.toGMTString()); }
}

6. Calendar

package com.msb;

import java.util.Calendar;
import java.util.GregorianCalendar; /**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 21:49
* @Description: com.msb
* @version: 1.0
*/
public class Test05 { public static void main(String[] args) {
// Calendar 是一个抽象类 不能实例化对象
// new Calendar()
// GregorianCalendar 是Calendar的子类 extends Calendar
Calendar cal = new GregorianCalendar();
Calendar cal2 = Calendar.getInstance(); System.out.println(cal.get(Calendar.YEAR));//年 2023
System.out.println(cal.get(Calendar.MONTH));// 月 8 (从0开始)
System.out.println(cal.get(Calendar.DATE));// 日 17
System.out.println(cal.get(Calendar.DAY_OF_WEEK));//星期中的第几天 1
System.out.println(cal.get(Calendar.DAY_OF_MONTH));// 月里面的第几天 17
System.out.println(cal.getActualMaximum(Calendar.DATE));//日期的最大天数 30
System.out.println(cal.getActualMinimum(Calendar.DATE));//日期的最小天数 1 // set
cal.set(Calendar.YEAR, 1900);
cal.set(Calendar.MONTH, 2);
cal.set(Calendar.DATE, 20);
System.out.println(cal); // String转Calendar
java.sql.Date d = java.sql.Date.valueOf("2023-09-17");
cal.setTime(d);
System.out.println(cal); }
}

练习:输入日志 按格式 输出日历

package com.msb;

import java.util.Calendar;
import java.util.Scanner; /**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 22:03
* @Description: com.msb
* @version: 1.0
*/
public class Test06 { public static void main(String[] args) {
Calendar cal = Calendar.getInstance(); Scanner sc = new Scanner(System.in);
System.out.println("请输入日期,格式:2019-3-7");
String strDate = sc.next();
// java.sql.Date d = java.sql.Date.valueOf("2023-09-16");
java.sql.Date d = java.sql.Date.valueOf(strDate);
cal.setTime(d); System.out.println("日\t一\t二\t三\t四\t五\t六");
int maxDate = cal.getActualMaximum(Calendar.DATE);
int nowDay = cal.get(Calendar.DATE); // 把一号对应 星期的第几天求出来
cal.set(Calendar.DATE, 1);
int weekNum = cal.get(cal.DAY_OF_WEEK);
// System.out.println("ss:"+weekNum);
int num = weekNum-1;
for (int i = 0; i < num; i++) {
System.out.print("\t");
}
int count = 0;
count = count + num;
for (int i = 1; i < maxDate+1; i++) {
if (count % 7 ==0){
System.out.print("\n");
} if (i == nowDay){
System.out.print(i+"*"+"\t");
}else{
System.out.print(i+"\t");
}
count ++; }
}
}

7. Math

package com.msb;

/**
* @Auther: jack.chen
* @Date: 2023/9/18 - 09 - 18 - 20:26
* @Description: com.msb
* @version: 1.0
*/
public class Test07 {
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.random());// [0.0, 1.0)
System.out.println(Math.abs(-12));
System.out.println(Math.ceil(9.1));
System.out.println(Math.floor(9.9));
System.out.println(Math.round(3.5));
System.out.println(Math.max(2, 6));
System.out.println(Math.min(2, 6));
}
}

Math.Random

package com.msb;

import java.util.Random;

/**
* @Auther: jack.chen
* @Date: 2023/9/18 - 09 - 18 - 20:30
* @Description: com.msb
* @version: 1.0
*/
public class Test08 {
public static void main(String[] args) {
System.out.println(Math.random()); Random r1 = new Random(System.currentTimeMillis());
int i = r1.nextInt();
System.out.println(i); Random r2 = new Random();
System.out.println(r2.nextInt(10));
System.out.println(r2.nextDouble()); // 0--1之间
}
}

8. String 字符串

value是用于存放字符串的数组

package com.msb;

/**
* @Auther: jack.chen
* @Date: 2023/9/18 - 09 - 18 - 20:34
* @Description: com.msb
* @version: 1.0
*/
public class TestString01 {
public static void main(String[] args) {
String s = "abc"; }
}

基本接口

package com.msb;

import java.util.Arrays;

/**
* @Auther: jack.chen
* @Date: 2023/9/18 - 09 - 18 - 20:34
* @Description: com.msb
* @version: 1.0
*/
public class TestString01 {
public static void main(String[] args) {
String s = "abc";
System.out.println(s); String s1 = new String();
String s2 = new String("abc");
String s3 = new String(new char[]{'a','b','c'}); System.out.println(s1.isEmpty());
System.out.println(s2.charAt(0)); System.out.println(s1.equals(s2));
System.out.println(s1.compareTo(s2)); String s10 = "abcdefhijk"; System.out.println(s10.substring(3));//从第三个开始截取到最后 包括第三个
System.out.println(s10.substring(3, 6));
System.out.println(s10.concat("pppppp"));
System.out.println(s10.replace('a', 'z')); String s11 = "a-b-c-d-e-f";
String[] s11s = s11.split("-");
System.out.println(Arrays.toString(s11s)); String s12 = "abc";
System.out.println(s12.toUpperCase()); String s14 = " 123 ";
System.out.println(s14.trim()); String s15 = "Abc";
System.out.println(s15.toString()); System.out.println(String.valueOf(false)); }
}

9.StringBuilder

package com.msb;

/**
* @Auther: jack.chen
* @Date: 2023/9/18 - 09 - 18 - 20:51
* @Description: com.msb
* @version: 1.0
*/
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("nihaojavawodeshijie"); sb.append("这是梦想");
System.out.println(sb); sb.delete(3, 6);
System.out.println(sb); sb.deleteCharAt(0);
System.out.println(sb); StringBuilder s2 = new StringBuilder("23445980947");
s2.insert(3, ",");
System.out.println(s2); StringBuilder s3 = new StringBuilder("$2你好吗5980947");
s3.replace(3, 5, "我好累");
System.out.println(s3); s3.setCharAt(3, '!');
System.out.println(s3); StringBuilder sb3 = new StringBuilder("asfda");
for (int i = 0; i < sb3.length(); i++) {
System.out.print(sb3.charAt(i)+"\t");
} System.out.println(); String str = sb3.substring(2, 4);//得到新的string
System.out.println(str);
System.out.println(sb3); } }

String 不可变

StringBuilder StringBuffer 可变 append insert resvert setCharAt 改变内容 可以 使用toString

StringBuilder 效率高 线程不安全

StringBuffer 效率低 线程安全

java基础-常用类-day11的更多相关文章

  1. Java基础常用类深度解析(包含常见排序算法)

    目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> ...

  2. java基础---常用类

    一.字符串类String String:字符串,使用一对""引起来表示,字符串常量池在方法区中 public final class String implements java. ...

  3. JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类

    字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...

  4. Java基础——常用类之日期时间类

    如果有机会,请尝试Java8中全新的时间日期API!(参见Java8新特性随笔) 如果还是使用Java7及之前的版本,那么你可以尝试一些工具类(参考使用工具类相关的Hutool-DateUtil) 如 ...

  5. Java基础——常用类(Date、File)以及包装类

    本文要点: 基本数据类型的包装类 字符串相关类: 不可变字符序列:String 可变字符序列:StringBuffer.StringBuilder 时间处理相关类: Date DateFormat.S ...

  6. Java基础—常用类之String类

    一.String类是什么 public final class String implements java.io.Serializable, Comparable<String>, Ch ...

  7. JAVA基础——常用类(一)

     首先认识到--String是不可以变性(final) String:字符串,使用一对""引起来表示.      * 1.String声明为final的,不可被继承      * ...

  8. java基础-Integer类常用方法介绍

    java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...

  9. Java基础-StringBuffer类与StringBuilder类简介

    Java基础-StringBuffer类与StringBuilder类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.StringBuffer类 在学习过String类之后 ...

  10. Java API 常用类(一)

    Java API 常用类 super类详解 "super"关键字代表父类对象.通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始 ...

随机推荐

  1. LeetCode224:基本计算器(栈)

    解题思路: 1.双栈模拟,一个用来存数,一个用来存操作符.需要考虑 '('后面紧跟'+'.'-'这种情况 2.递归:遇到左括号开始递归,遇到右括号结束递归,返回值. 1 class Solution: ...

  2. CodeForces - 764C

    C. Timofey and a tree time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  3. Linux系统firewall开启关闭相关命令

    默认情况下,我们的服务器没有开放80或443端口,那么我们需要去开放这些端口, CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,Centos 7使用firewalld代替 ...

  4. DVWA Insecure CAPTCHA(不安全的验证码)全等级

    Insecure CAPTCHA(不安全的验证码) 目录: Insecure CAPTCHA(不安全的验证码) 1. Low 2.Medium 3. High 4.Impossible 加载验证码需要 ...

  5. 使用openfrp搭建网站[无公网ip]

    使用openfrp搭建网站的理由 免费/低成本 安全 可扩展 使用条件 有一台低功耗准系统/服务器[无公网ip] u盘 网线/waif网卡 屏幕 使用方法 第1步准备服务 低功耗准系统 / 服务器 推 ...

  6. ubuntu安装mysql8,debian安装mysql8,linux安装mysql8,x86_64架构,deb包

    作者主页:https://www.cnblogs.com/milkbox 参考: 修改大小写:MySQL8.0安装后更改不区分大小写!包你必生效!_mysql8.0不区分大小写-CSDN博客 整个安装 ...

  7. 我开源了一个 Go 学习仓库

    目录 前言 一.综述 1.1 Hello Word 1.2 命令行参数 1.3 查找重复行 1.4 GIF 动画 1.5 获取一个URL 1.6 并发获取多个URL 1.7 实现一个 Web 服务器 ...

  8. VSCode C++开发环境配置:CMake 调试配置 launch.json

    相关内容 VSCode C++开发环境配置: LLVM clang clangd 安装 cmake sudo apt install cmake 安装 VSCode 插件 CMake CMakeToo ...

  9. KubeCon China 2023 | 拥抱开源,华为云原生华彩绽放

    本文分享自华为云社区<KubeCon China 2023 | 拥抱开源,华为云原生华彩绽放>,作者: 云容器大未来 . 2023 年度云原生全球旗舰盛会 KubeCon + CloudN ...

  10. 数仓集群管理:单节点故障RTO机制分析

    摘要:大规模分布式系统中的故障无法避免.发生单点故障时,集群状态和业务是如何恢复的? 本文分享自华为云社区<GaussDB (DWS) 集群管理系列:单节点故障RTO机制分析(集群状态恢复篇)& ...