Java两周半速成之路(第十天)

news2024/12/24 9:33:39

一.String和StringBuffer的相互转换

1.适用场景:

 场景1:可以需要用到另一种类中的方法,来方便处理我们的需求

 场景2:方法传参

场景一演示:


/*
    String和StringBuffer的相互转换

    A<-->B
    什么场景需要做转换操作:
    场景1:可以需要用到另一种类中的方法,来方便处理我们的需求
    场景2:方法传参

 */
public class StringBufferDemo1 {
    public static void main(String[] args) {
        //创建一个String对象
        String s1 = "hello";
        System.out.println("s1: " + s1);

        //String-->StringBuffer
        //1、使用StringBuffer构造方法
        StringBuffer sb1 = new StringBuffer(s1);
        System.out.println("sb1: " + sb1);


        //StringBuffer-->String
        //1、toString()方法
        StringBuffer sb2 = new StringBuffer("world");
        String s2 = sb2.toString();
        //2、截取
        String s3 = sb2.substring(0);

        System.out.println("--------------转换调用另一种类中的方法案例-------------------");
        //String对象字符串逆序
        String s4 = "abcd";
        System.out.println("s4: "+s4);
        //先转StringBuffer
        StringBuffer sb3 = new StringBuffer(s4);
        sb3.reverse();
        //再转回字符串String类型
        String s5 = sb3.toString();
        System.out.println("s5: "+s5);


    }
}

场景二演示:

(1) String类型作为方法参数传递
/*
    看程序写结果:
        String作为参数传递
        StringBuffer作为参数传递: 哪一个StringBuffer对象调用方法,哪一个就会改变

 */
public class StringBufferDemo5 {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "world";
        change(s1, s2);
        System.out.println("s1: " + s1 + ", s2: " + s2);  //s1: hello, s2: world


    public static void change(String s1, String s2) {
        s1 = s2;
        s2 = s1 + s2;
        System.out.println("s1: " + s1 + ", s2: " + s2);   //s1: world, s2: worldworld
    }
}

 内存图解:

(2)StringBuffer类型作为方法参数传递 

演示:

/*
    看程序写结果:
        String作为参数传递
        StringBuffer作为参数传递: 哪一个StringBuffer对象调用方法,哪一个就会改变

 */
public class StringBufferDemo5 {
    public static void main(String[] args) {


        StringBuffer sb1 = new StringBuffer("hello");
        StringBuffer sb2 = new StringBuffer("world");
        change(sb1, sb2);
        System.out.println("sb1: " + sb1 + ",sb2: " + sb2);    //sb1:hello     sb2:worldworld
    }

    public static void change(StringBuffer sb1, StringBuffer sb2) {
        sb1 = sb2;
        sb2 = sb1.append(sb2);
        System.out.println("sb1: " + sb1 + ",sb2: " + sb2); //sb1:worldworld   sb2:worldworld
    }

}

内存图解:

 2.练习

  题目:把数组拼接成一个字符串

/*
    把数组拼接成一个字符串,
 */
public class StringBufferTest {
    public static void main(String[] args) {
        int[] arr1 = {11, 22, 33, 44, 55};
        StringBuffer sb1 = new StringBuffer();
        for (int i = 0; i < arr1.length; i++) {
            sb1.append(arr1[i]);
        }
        System.out.println(sb1);
//        System.out.println(sb1.toString());     //与上一条语句等价,上一条语句默认调用了toString()方法
    }
}

 结果:1122334455

 二.Arrays类概述及其常用方法

1.概述:

(1)与StringBffer类相似,不会新创建内存存放数据,而是在自身的"管道"中修改

(2)Arrays: 该类中没有构造方法,但是有很多静态方法,这种类我们称之为工具类

2.静态成员方法:

public static String toString(int[] a)           将数组以字符串的形式返回

public static void sort(int[] a)                    快速排序,结果是升序的

public static int binarySearch(int[] a,int key)         二分查找 返回查找到元素的索引

 演示:


import java.lang.reflect.Array;
import java.util.Arrays;

/*
    Arrays: 该类中没有构造方法,但是有很多静态方法,这种类我们称之为工具类

    静态成员方法:
        public static String toString(int[] a)
        public static void sort(int[] a)
        public static int binarySearch(int[] a,int key)


 */
public class ArrayDemo {
    public static void main(String[] args) {
        //public static String toString(int[] a) 将数组以字符串的形式返回
        int [] arr1= {32,213,33,32,1};
        String s1 = Arrays.toString(arr1);
        System.out.println(s1);  //[32, 213, 33, 32, 1]      String类型

        //public static void sort(int[] a) 快速排序,结果是升序的
        Arrays.sort(arr1);
        System.out.println(Arrays.toString(arr1));  //[1, 32, 32, 33, 213]

        //public static int binarySearch(int[] a,int key) 二分查找 返回查找到元素的索引
        //前提:序列必须是有序的
        System.out.println(Arrays.binarySearch(arr1, 32));  //2

        //如果找不到该元素,则会按照源码的逻辑返回某个值
        System.out.println(Arrays.binarySearch(arr1,465));    //-6

        /*
        binarySearch()源码:
           public static int binarySearch(int[] a, int key) {
        return binarySearch0(a, 0, a.length, key);
    }
        
        binarySearch()方法返回值binarySearch0源码:

         private static int binarySearch0(int[] a, int fromIndex, int toIndex,
                                     int key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            int midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }
         */

    }
}

三、包装类

1.概述:

java为了扩展每一个基本数据类型的功能,针对每一个基本数据类型都提供了一个对应的类,这些类统称为包装类

2.八大基本类型所对应的包装类:

byte: Byte                  short: Short                 int: Integer  √                   long: Long

float: Float                  double: Double           boolean: Boolean           char: Character   

 3.Integer类

(1)概述:

<1>   Integer 类在对象中包装了一个基本类型 int 的值

<2>   该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法

(2)构造方法

public Integer(int value)             将基本数据类型int包装成引用数据类型Integer

public Integer(String s)              将String类型(例如"100")包装成Integer类型(变为100)

演示:


/*
    java为了扩展每一个基本数据类型的功能,针对每一个基本数据类型都提供了一个对应的类,这些类统称为包装类
    byte: Byte
    short: Short
    int: Integer   √
    long: Long
    float: Float
    double: Double
    boolean: Boolean
    char: Character  √

    Integer类中的构造方法:
        public Integer(int value)
        public Integer(String s)


 */
public class BaoZhuangDemo {
    public static void main(String[] args) {
        //public Integer(int value) 将基本数据类型int包装成引用数据类型Integer
//        Integer i = new Integer(100);
        Integer i = 100;   //自动装箱   等价于上条语句
        System.out.println(i);
        System.out.println(i+1); //自动拆箱


        //public Integer(String s)       //将String类型(例如"100")包装成Integer类型(变为100)
        Integer i1 = new Integer("100");
        System.out.println(i1);    // 100    Intefer类型

        Integer i2 = new Integer("xuyou");
        System.out.println(i2);    //NumberFormatException  报错的原因是不能将字符串类型的“xuyou”转化为数字的Intefer类型
    }
}
3.1 int类型和String类型的相互转换

public int intValue()                                      手动获取被包装的数值

public static int parseInt(String s)                 将字符串转成数字

public static String toString(int i)                   int->String

public static Integer valueOf(int i)                 int->Integer

public static Integer valueOf(String s)          String->Integer

 演示:

/*
    Integer类中的成员方法:
        int类型和String类型的相互转换(字符串中的内容要是数值内容)
            int – String
            String – int

        public int intValue()       // 手动获取被包装的数值
        public static int parseInt(String s)       将字符串转成数字(String->int)
        public static String toString(int i)
        public static Integer valueOf(int i)
        public static Integer valueOf(String s)    

 */
public class IntegerDemo1 {
    public static void main(String[] args) {
        Integer i = 50;  //自动装箱
        System.out.println(i.toString()); //50   重写了toString()
        System.out.println(i.intValue()); //50   手动获取被包装的数值


        //public static int parseInt(String s)  将字符串转成数字
        //String->int
        String s1 = "100";
        System.out.println(Integer.parseInt(s1)); //100


        //public static String toString(int i)
        //int->String
        System.out.println(Integer.toString(100));  //  100     控制台输出100,其实是"100"


        //public static Integer valueOf(int i)
        //int->Integer
        int i1 = 20;
        System.out.println(Integer.valueOf(i1));     //20


        //public static Integer valueOf(String s)
        //String->Integer
        String s2 = "200";
        System.out.println(Integer.valueOf(s2)); //200

        //public static String toBinaryString(int i)      //转二进制
        Integer i2 = 30;
        String i3 = Integer.toBinaryString(i2);
        System.out.println("i3:"+i3);


        //如何将Integer->int
        Integer a1 = 100;
        System.out.println(a1.intValue());    //100   手动获取被包装的数值

        //如何将Integer->String     
        Integer a2 = 90;
        System.out.println(a2.toString()+1);    //901


    }
}
 3.2进制转换

(1)常用的基本进制转换

     public static String toBinaryString(int i)          转二进制

     public static String toOctalString(int i)           转八进制

     public static String toHexString(int i)             转十六进制

(2)十进制到其他进制

     public static String toString(int i,int radix)

(3)其他进制到十进制

     public static int parseInt(String s,int radix)

 3.3JDK5的新特性

4.Character类 

(1)概述:Character 类在对象中包装一个基本类型 char 的值

(2)构造方法:public Character(char value)

(3)Character类成员方法

public static boolean isUpperCase(char ch)          判断一个字符是否是大写

public static boolean isLowerCase(char ch)         判断一个字符是否是小写

public static boolean isDigit(char ch)                    判断一个字符是否是数字

public static char toUpperCase(char ch)               转大写

public static char toLowerCase(char ch)               转小写

package com.shujia.day11;

/*
    char - Character

    public static boolean isUpperCase(char ch)
    public static boolean isLowerCase(char ch)
    public static boolean isDigit(char ch)
    public static char toUpperCase(char ch)
    public static char toLowerCase(char ch)

 */
public class CharacterDemo1 {
    public static void main(String[] args) {
       // public static boolean isUpperCase(char ch)    判断一个字符是否是大写
        Character c1 = 's';
        System.out.println(Character.isUpperCase(c1));   //false

        //public static boolean isLowerCase(char ch)      判断一个字符是否是小写
        System.out.println(Character.isLowerCase(c1));    //true

        //public static boolean isDigit(char ch) 判断一个字符是否是数字
        System.out.println(Character.isDigit(c1));       //false

        //public static char toUpperCase(char ch) 转大写
        System.out.println(Character.toUpperCase(c1));      //S

        //public static char toLowerCase(char ch) 转小写
        Character c2 = 'A';
        System.out.println(Character.toUpperCase(c2));    //A

    }
}

四.System类:和系统操作相关的工具类

成员方法:

public static void gc()                                  用于垃圾回收

public static void exit(int status)                  强制退出程序

public static long currentTimeMillis()           获取时间戳(重要)

演示:

/*
    System类:和系统操作相关的工具类
    public static void gc()
    public static void exit(int status)          强制退出程序
    public static long currentTimeMillis()       获取时间戳          重要!!!

 */
public class SystemDemo {
    public static void main(String[] args) {
//                for (int i = 0; i < 10; i++) {
//            if(i==5){
                break;
//                System.exit(0);     //
//            }
//            System.out.println(i);
//        }
//
//        System.out.println("hello world");  //不打印该语句的原因是程序已退出

        System.out.println(System.currentTimeMillis()); //1709562014625

    }
}

 五.Random类成员方法

public int nextInt()

public int nextInt(int n)

演示:


import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        Random random = new Random();
//        int i = random.nextInt();     //-1055188392   随机生成一个数
//        System.out.println(i);

//        public int nextInt(int bound)  //随机产生一个整数,范围在 [0,bound)
        System.out.println(random.nextInt(100)+1);


    }
}

六.Date类概述及其方法

1.Date类概述

类 Date 表示特定的瞬间,精确到毫秒。

2.构造方法

public Date()                           将程序运行到此行时,此刻的时间

public Date(long date)            将指定的时间戳转成对应的时间

3.成员方法

public long getTime()

public void setTime(long time)

 演示:

import java.util.Date;

/*
    Date类:和日期有关的类

    SimpleDateFormat类:和日期格式化有关的类

    构造方法:
        public Date()  将程序运行到此行时,此刻的时间
        public Date(long date)  将指定的时间戳转成对应的时间

    成员方法
           public long getTime()
           public void setTime(long time)


 */
public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);         //Mon Mar 04 22:34:03 CST 2024
        long l = System.currentTimeMillis();
        System.out.println(l);             //1709562843667
        System.out.println(new Date(l));  //Mon Mar 04 22:34:03 CST 2024
    }
}

 七、DateFormat类概述及其方法

1、DateFormat类概述

 (1)DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

(2)是抽象类,所以使用其子类SimpleDateFormat SimpleDateFormat

2、构造方法

public SimpleDateFormat()

public SimpleDateFormat(String pattern)

3、成员方法wei

public final String format(Date date)          将Date类型的值格式化为目标形式

public Date parse(String source)

演示:

import java.text.SimpleDateFormat;
import java.util.Date;

/*
    日期格式化类:SimpleDateFormat

    构造方法:
        public SimpleDateFormat(String pattern) yyyy年MM月dd日 HH时mm分ss秒

 */
public class SimpleDateFormatDemo {
    public static void main(String[] args) {
//        Date date = new Date();
//        System.out.println(date);  //Mon Mar 04 22:46:26 CST 2024
//
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
//        String format = sdf.format(date);
//        System.out.println(format);   //2024年03月04日 22时46分26秒


        /*
         需求:将一个时间戳转成指定日期格式 1709535166924
          时间戳--Date--格式化
         */
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date1 = new Date(1709535166924L);
        System.out.println(date1);      //Mon Mar 04 14:52:46 CST 2024
        String format = sdf.format(date1);   
        System.out.println(format);    //2024年03月04日 14时52分46秒

    }
}

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

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

相关文章

字节跳动发布SDXL-Lightning模型,支持WebUI与ComfyUI双平台,只需一步生成1024高清大图!

字节跳动发布SDXL-Lightning模型,WebUI与ComfyUI平台,只需一步生成1024高清大图,需要的步数比 LCM 更低了! 什么是SDXL-Lightning: SDXL-Lightning 是一种快速的文本到图像生成模型。SDXL-Lightning模型的核心优势在于其创新的蒸馏策略,它可以通过几个步骤生成高质量的 1…

【数据分享】1988~2020年中国月度1KM植被指数NDVI空间分布数据集

各位同学们好&#xff0c;今天和大伙儿分享的是1988~2020年中国月度1KM植被指数NDVI空间分布数据集。如果大家有下载处理数据等方面的问题&#xff0c;您可以私信或评论。 徐新良.中国月度植被指数&#xff08;NDVI&#xff09;空间分布数据集.中国科学院资源环境科学数据中心数…

SpringCloud-RabbitMQ消息模型

本文深入介绍了RabbitMQ消息模型&#xff0c;涵盖了基本消息队列、工作消息队列、广播、路由和主题等五种常见消息模型。每种模型都具有独特的特点和适用场景&#xff0c;为开发者提供了灵活而强大的消息传递工具。通过这些模型&#xff0c;RabbitMQ实现了解耦、异步通信以及高…

数据结构(一)——概述

一、绪论 1.1数据结构的基本概念 数据&#xff1a;用来描述客观事物的数、计算机中是字符及所有能输入并被程序识别和处理的符号的集合。 数据元素&#xff1a;数据的基本单位&#xff0c;一个数据元素可由若干数据项组成。 数据结构&#xff1a;指相互之间存在一种或多种特…

C++:Vector的使用

一、vector的介绍 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以…

解决win10系统cmd命令无法使用ssh问题

目录 问题说明&#xff1a;在使用ssh命令连接虚拟机地址时&#xff0c;出现了以下报错&#xff1a;​编辑 解决方法如下&#xff1a; 1.打开Windows设置&#xff0c;搜索点击添加可选功能&#xff1a; 2.点击添加功能&#xff1a; 3.安装Open SSH客户端和Open SSH服务器: …

基于Python3的数据结构与算法 - 10 计数排序

一、问题 对列表进行排序&#xff0c;已知列表中的数范围都在0到100之间。设计时间复杂度为O(n)的算法。 二、解决思路 我们已知数字的范围&#xff0c;那么我们可以将数字的个数得到&#xff1a; 例如&#xff1a;有一个0~5的列表 [1,3,2,4,1,2,3,1,3,5] 则共有0个0&am…

Tomcat(二) 动静分离

一、(TomcatNginx)动静分离 1、单机反向代理 利用 nginx 反向代理实现全部转发至指定同一个虚拟主机 客户端curl www.a.com 访问nginx服务&#xff0c;nginx服务通过配置反向代理proxy_pass www.a.com:8080&#xff0c;最终客户端看到的是www.a.com 实验中&#xff1a;7-3 做客…

保姆级GeoWebCache矢量瓦片切片流程

1矢量切片解决方案 1.1Geoserver配置geowebcache插件 参考文章 (53条消息) 独立安装geoservergeowebcache发布arcgis切片服务_itouch_ok的专栏-CSDN博客 1.将下载好的geoserver 2.19.3安装部署 将下载好的geowebcache 2.19.3的war包解压到 GeoServer 安装目录下./usr/loc…

两天学会微服务网关Gateway-Gateway HelloWorld快速入门

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

SpringBoot 自定义映射规则resultMap collection一对多

介绍 collection是封装一对多关系的&#xff0c;通常情况下是一个列表&#xff0c;association是一对一&#xff0c;通常情况是一个对象。例如&#xff1a;查询班级下所有的学生&#xff0c;一个班级可以有多个学生&#xff0c;这就是一对多。 案例 有一个学生表&#xff0c…

重构笔记系统:Docker Compose在微服务架构中的应用与优化

虽然我的笔记系统的开发是基于微服务的思想&#xff0c;但是在服务的配置和编排上感觉还是不太合理&#xff0c;具体来说&#xff0c;在开发上的配置和在生产上的配置差别太大。现在规模小&#xff0c;后面规模变大&#xff0c;估计这一块会成为系统生长的瓶颈。 因此&#xff…

优先级队列(Java )

目录 一、 优先级队列1、概念 二、优先级队列的模拟实现1、堆的概念2、堆的存储方式 三、堆的创建1、堆向下调整2、堆的创建3、建堆的时间复杂度 四、堆的插入与删除1、堆的插入2、堆的删除 五、用堆模拟实现优先级队列 一、 优先级队列 1、概念 优先级队列&#xff08;Priori…

Windows Docker 部署 Jenkins

一、简介 今天介绍一下在 Windows Docker 中部署 Jenkins 软件。在 Windows Docker 中&#xff0c;分为两种情况 Linux 容器和 Windows 容器。Linux 容器是通常大多数使用的方式&#xff0c;Windows 容器用于 CI/CD 依赖 Windows 环境的情况。 二、Linux 容器 Linux 容器内部…

vue中使用echarts实现人体动态图

最近一直处于开发大屏的项目&#xff0c;在开发中遇到了一个小知识点&#xff0c;在大屏中如何实现人体动态图。然后看了下echarts官方文档&#xff0c;根据文档中的示例调整出来自己想要的效果。 根据文档上发现 series 中 type 类型设置为 象形柱形图&#xff0c;象形柱图是…

[HackMyVM]靶场 Quick3

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (U…

解密Lawnchair:打造个性化极致的Android桌面体验

解密Lawnchair&#xff1a;打造个性化极致的Android桌面体验 1. 简介 Lawnchair是一款知名的Android桌面定制工具&#xff0c;旨在为用户提供个性化极致的桌面体验。作为一个开源项目&#xff0c;Lawnchair融合了简洁、灵活和强大的特点&#xff0c;让用户能够自由定制其Andro…

b站小土堆pytorch学习记录—— P17 土堆说卷积操作

文章目录 一、前置知识什么是卷积操作 二、代码 一、前置知识 什么是卷积操作 推荐几个高赞博客&#xff1a; 卷积最容易理解的解释 卷积神经网络&#xff08;CNN&#xff09;详细介绍及其原理详解 还有pytorch官网的动态图&#xff1a; pytorch卷积 二、代码 import t…

免费的ChatGPT网站( 7个 )

ChatGPT 是由 OpenAI 公司研发的一款大型语言模型&#xff0c;它可以实现智能聊天、文本生成、语言翻译等多种功能。以下是 ChatGPT 的详细介绍&#xff1a; 智能聊天&#xff1a;ChatGPT 可以与用户进行自然语言对话&#xff0c;回答用户的问题&#xff0c;提供相关的信息和建…

通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践

作者&#xff1a;汪诚愚&#xff08;熊兮&#xff09;、高一鸿&#xff08;子洪&#xff09;、黄俊&#xff08;临在&#xff09; Qwen1.5&#xff08;通义千问1.5&#xff09;是阿里云最近推出的开源大型语言模型系列。作为“通义千问”1.0系列的进阶版&#xff0c;该模型推出…