JavaAPI常用类02

目录

基本数据类型封装类

 包装类常用属性方法

8中基本数据类型各自所对应的包装类

以下方法以java.lang.Integer为例

代码

 运行

装箱和拆箱

装箱

何为装箱

代码

范围问题

代码

运行 

拆箱

代码

String类

概述

代码

运行

创建形式

画图讲解

代码

运行 

构造方法

代码

运行 

成员方法

判断功能

代码

 运行

获取功能

代码

运行 

转换功能

代码

运行 

替换功能  去除字符串两侧空格

代码

运行

StringBuffer类与StringBuilder类

StringBuffer类

添加功能

代码

运行 

删除功能

代码

运行

替换功能

代码

运行

反转功能

代码

运行

StringBuilder类

代码

运行

String类 --StringBuffer类--StringBuilder类


基本数据类型封装类

对于包装类来说,这些类的用途主要包含两种:

● 作为和基本数据类型对应的类类型存在。

● 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操 作方法

 包装类常用属性方法

8中基本数据类型各自所对应的包装类

以下方法以java.lang.Integer为例

代码
package com.ffyc.javaapi.datatype;

import java.util.Scanner;

public class IntegerDemo1 {
    public static void main(String[] args) { 

        //如何获得一个int类型的包装对象
        //通过构造方法 new
        Integer a = new Integer(10);
        System.out.println(a);//10
        Integer b = new Integer("8");
        System.out.println(b);//8
        //通过valueOf()方法
        Integer c = Integer.valueOf(10);
        System.out.println(c);//10
        Integer d = Integer.valueOf("8");
        System.out.println(d);//8

        //非静态方法 直接对包装对象中的值操作
        int i = a.compareTo(b);//比较大小 返回-1 0 1
        System.out.println(i);//1
        System.out.println(a == b);//地址比:false
        System.out.println(a.equals(b));//数值比:false
        int j = a.intValue();//取出包装类型中的基本数据类型的值
        System.out.println(j);//10

        //静态方法 需要传参
        int e = Integer.compare(10, 8);
        System.out.println(e);//1
        String f = Integer.toHexString(12138);
        System.out.println(f);//返回16进制
        Integer.max(10, 8);

        int g = Integer.parseInt("20");//把字符串类型数值 转为基本类型int

    }
}
 运行

装箱和拆箱

装箱

何为装箱

         装箱:将基本类型可以自动转为包装类型
              int a = 10;
              Integer a1 = Integer.valueOf(a);
              Integer a2 = new Integer(a);

              Integer aa = a;自动装箱 直接把基本类型 赋值给包装类型
                                     底层是默认调用valueOf(a); 

代码
package com.ffyc.javaapi.datatype;

public class IntegerDemo2 {
    public static void main(String[] args) {
        int a = 10;
        Integer aa = a;
    }
}
范围问题

          public static Integer valueOf(int i) { 

             if (i >= IntegerCache.low && i <= IntegerCache.high)
                 return IntegerCache.cache[i + (-IntegerCache.low)];
             return new Integer(i);
          }
          自动装箱时,默认调用Integer类中valueOf(),
          这份方法内部对-128 -- +127之间进行缓存(数组),在此区间的自动装箱,不会创建新的Integer对象,直接从数组中获取即可
          超出此区间后,每次都会new 新的Integer对象 

代码
package com.ffyc.javaapi.datatype;

public class IntegerDemo3 {
    public static void main(String[] args) { 
        Integer a = 18;
        Integer b = 18;
        System.out.println(a == b);//true
        System.out.println(a.equals(b));//true

        Integer c = Integer.valueOf(128);
        Integer d = Integer.valueOf(128);
        System.out.println(c == d);//false
        System.out.println(c.equals(d));//true
    }
}
运行 

拆箱

         拆箱:将包装类型可以自动转为基本类型 型
                   底层用到的是intValue();

代码
package com.ffyc.javaapi.datatype;

public class IntegerDemo2 {
    public static void main(String[] args) { 
        int a = 10;
        Integer aa = a;

        int bb = aa;
    }
}

String类

概述

      Java.lang.String代表字符串
      Java中凡是""括起来的 都是String类的实例(对象)
      字符串的值不可改变的,一旦字符串对象被创建,它的值就不能改变了

      底层存储字符串内容的数组,是被final修饰的,必须在对象创建之处由构造方法去创建
      private final char value[];

      String s = "abc";   abc
             s += "aaa";  abcaaa
             s += "bbb";  abcaaabbb
             s += "ccc";  abcaaabbbccc  每次+= + 其实都是创建了一个新的字符串对象 

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo1 { 
    public static void main(String[] args) {
        String s = "abc";//[a,b,c]
        s += "aaa";
        s += "bbb";
        s += "ccc";
        System.out.println(s);
    }
}

运行

创建形式

      Java中字符串创建的两种方式
      方式一:
        String s1 = "abc";
        String s2 = "abc";
        在第一次创建s1变量时,会去内存中有一个叫字符串常量池的空间检索,有没有此内容的一个字符串对象,
        如果没有,就会在字符串常量池中创建一个字符串对象,把对象的地址赋给s1.
        在第二次创建s2变量时,会去字符串常量池中查找,如果有,直接将之前创建的字符串对象赋值给s2.
        一旦出现要创建的字符串对象内容一致,返回拿到的是同一个字符串对象的地址
      方式二:
        String s3 = new String("abc");
        String s4 = new String("abc");
        无论是否存在相同内容的字符串对象,都会创建一个新的字符串对象

画图讲解

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo2 { 
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);//true
        System.out.println(s1.equals(s2));//true

        s1 += "aaa";
        System.out.println(s1);

        String s3 = new String("abc");
        String s4 = new String("abc");
        System.out.println(s3 == s4);//false
        System.out.println(s3.equals(s4));//true
    }
}
运行 

构造方法

     String 构造方法 
     String(); 无参
     String("abc");有参
     String(byte[] bytes);
     String(char[] bytes); 

代码
package com.ffyc.javaapi.stringdemo;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class StringDemo3 { 
    public static void main(String[] args) throws UnsupportedEncodingException {
        String s1 = new String();//  this.value = "".value;
        String s2 = new String("abc");

        String s3 = "abc你好";
        //把字符串转为byte类型  转码
        //byte[] bytes = s3.getBytes();
        //把字符串转为byte类型  转码
        byte[] bytes = s3.getBytes("utf-8");
        System.out.println(bytes);//[B@1b6d3586
        System.out.println(Arrays.toString(bytes));//[97, 98, 99, -28, -67, -96, -27, -91, -67]

        //String s4 = new String(bytes);解码
        String s4 = new String(bytes,"utf-8");//解码
        System.out.println(s4);//abc你好

        String s5 = "bced";
        //字符串--->转为char数组
        char chars[] = s5.toCharArray();
        Arrays.sort(chars);
        //char数组--->字符串
        String s6 = new String(chars);
        System.out.println(s6);//bcde

    }
}
运行 

成员方法

判断功能

      成员方法
      ● 判断功能
         boolean equals(Object obj)
         boolean equalsIgnoreCase(String str)
         boolean contains(String str)
         boolean isEmpty()D
         boolean startsWith(String prefix)
         boolean endsWith(String suffix) 

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo4 { 
    public static void main(String[] args) {
        String s1 = "abcd";
        String s2 = "";
        //null--->关键字  ""--->字符串对象的值是""
        //String s3 = null; 

        //判断值是否相等
        System.out.println(s1.equals("abcd"));//true
        //忽略大小写
        System.out.println(s1.equalsIgnoreCase("abcD"));//true 

        //判断是否包含子串(字串必须是连续的)
        System.out.println(s1.contains("ab"));//true
        System.out.println(s1.contains("ab"));//true
        System.out.println(s1.contains("ac"));//false  

        //判断是否是空串""
        System.out.println(s1.isEmpty());//false
        System.out.println(s2.isEmpty());//true 
        //System.out.println(s3.isEmpty());

        //判断是否以指定的子串开头
        System.out.println(s1.startsWith("ab"));//true  
        //判断是否以指定的子串结尾
        System.out.println(s1.endsWith("bd"));//false  
    }
}
 运行

获取功能

      成员方法 
      ● 获取功能
         int length()
         char charAt(int index)
         int indexOf(String str)
         int indexOf(String str,int fromIndex)
         String substring(int start)
         String substring(int start,int end) 

代码
 package com.ffyc.javaapi.stringdemo;

 public class StringDemo5 { 
    public static void main(String[] args) {
        String s1 = "abcdcde";
                   //0123456
        //获取长度
        System.out.println(s1.length());//4 
        //通过索引找位置
        System.out.println(s1.charAt(1));//b 
        //返回指定字符首次出现的位置
        System.out.println(s1.indexOf("c"));//2 
        //返回指定字符串首字母首次出现的位置
        System.out.println(s1.indexOf("c"));//2
        //从指定位置开始查找
        System.out.println(s1.indexOf("c", s1.indexOf("c")+1));//4 
        //从后向前查找
        System.out.println(s1.lastIndexOf("c"));// 4
        //从指定位置开始查找
        System.out.println(s1.lastIndexOf("c", 3));//2 

        /*//从指定的位置开始截取字符串,返回一个新的子字符串
        String s = s1.substring(3);
        System.out.println(s);//dcde*/
        //从指定的位置开始到指定的位置结束(不包含结束)截取字符串,返回一个新的子字符串
        String s = s1.substring(0,4);
        System.out.println(s);//abcd
    }
}
运行 

转换功能

      构造方法 
      ● 转换功能
         byte[] getBytes()
         char[] toCharArray()
         static String valueOf(char[] chs)
         String toLowerCase()
         String toUpperCase()
         String concat(String str)
         Stirng[] split(分割符); 

代码
package com.ffyc.javaapi.stringdemo;

import java.util.Arrays;

public class StringDemo6 { 
    public static void main(String[] args) {
        Integer a = null;
        //System.out.println(a.toString());
        //把其他类型转为字符串 建议使用的,避免出现空指针异常
        String s = String.valueOf(a);
        System.out.println(s);

        char[] c = {'a','b','c'};
        //基本数据类型转成字符串表示形式
        String s1 = String.valueOf(c);
        System.out.println(s1);//abc

        String s2 = "abcDEF你好";
        //将字符串的所有字符转换为小写字母。
        System.out.println(s2.toLowerCase());//abcdef你好
        //将字符串的所有字符转换为大写字母。
        System.out.println(s2.toUpperCase());//ABCDEF你好

        String s3 = s2.concat("wwwww");
        //将指定的字符串拼接到字符串末尾,返回一个新的字符串
        System.out.println(s3);//abcDEF你好wwwww

        String s4 = "abc;de;fg";
        //正则表达式  使用指定的一个字符,将字符串分割为一个String类型数组
        String[] strings = s4.split(";");
        System.out.println(Arrays.toString(strings));//[abc, de, fg]
    }
}
运行 

替换功能  去除字符串两侧空格

      构造方法 
      ● 替换功能
         String replace(char old,char new)
         String replace(String old,String new)
         replaceAll(String regex, String replacement)
         replaceFirst(String regex, String replacement)
      ● 去除字符串两空格
         String trim() 

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo7 { 
    public static void main(String[] args) {
        String s1 = "abcdecfg";
        //替换字符串中指定字符的所有值
        System.out.println(s1.replace('c', 'C'));//abCdeCfg
        System.out.println(s1.replace("cd", "jj"));//abjjecfg

        //replaceAll()使用正则表达式匹配需要替换的内容
        System.out.println(s1.replaceAll("c", "CC"));//abCCdeCCfg
        System.out.println(s1.replaceFirst("c", "o"));//abodecfg

        String s2 = " asd sax ";
        System.out.println(s2.length());//9
        //求字符串长度
        System.out.println(s2.trim().length());//7
        System.out.println(s2.replace(" ", "").trim().length());//6
    }
}
运行

StringBuffer类与StringBuilder类

StringBuffer类

     因为String声明的对象值一旦给定不能再改变
     每次拼接都会创建新的字符串对象,耗时占用空间

     StringBuffer是内容可以改变的字符串
     char[] value;没有使用final修饰,每次添加内容都是对此数组进行操作,不会创建新的字符串对象 

添加功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) {
        //添加功能
        //创建一个内容长度+16的char数组 20
        StringBuffer s1 = new StringBuffer("abcd");
        System.out.println(s1.append("efg"));

        //空参的构造方法 指定底层数组的长度是16
        StringBuffer s2 = new StringBuffer();
        System.out.println(s2.append("cz"));

        //自定义容量  自动扩容
        StringBuffer s3 = new StringBuffer(10);
        s3.append("chjbp");
        s3.append("kl");
        System.out.println(s3.append("ffgg"));

        //指定位置添加元素
        StringBuffer s4 = new StringBuffer("abc");
        System.out.println(s4.insert(2, "A"));
    }
}
运行 

删除功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) {
        //删除功能
        StringBuffer s1 = new StringBuffer("abcd");
        //删除指定位置元素
        System.out.println(s1.deleteCharAt(2));
        //删除指定位置的元素 包含开始位置,不包含结束位置
        System.out.println(s1.delete(0, 2)); 
    }
}
运行

替换功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) { 
        //替换功能
        StringBuffer s1 = new StringBuffer("abcalkdswbc");
        //替换指定区间元素,包含开始位置,不包含结束位置
        System.out.println(s1.replace(0, 3, "aaa"));
    }
}
运行

反转功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) { 
        //反转功能
        StringBuffer s1 = new StringBuffer("abcdefg");
        //将字符串逆序
        System.out.println(s1.reverse());
        //截取字符串,从StringBuffer中截取一个字符串副本,返回一个新的String对象,StringBuffer对象本身不变
        String str = s1.substring(0, 3);
        System.out.println(str);
    }
}
运行

StringBuilder类

StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程 安全的

代码
package com.ffyc.javaapi.stringdemo;

public class StringBuilderDemo { 
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder();
        StringBuilder s2 = new StringBuilder("abcd");
        StringBuilder s3 = new StringBuilder(10);
        System.out.println(s2.append("efg"));
        System.out.println(s2.insert(1, " "));
    }
}

运行

String类 --StringBuffer类--StringBuilder类

      String:是一个值不可以改变的字符串 
      StringBuffer:值可以改变且不需要创建新对象,方法上都加了锁,是在多线程(任务)执行时是线程安全的
      StringBuilder:值可以改变且不需要创建新对象,由于方法上都没有枷锁,在多线程(任务)执行时是线程不安全的,适合单线程 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

挑战杯 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 该项目较为新颖&#xff0c;适合作为竞赛课…

mac下使用jadx反编译工具

直接执行步骤&#xff1a; 1.创建 jadx目录 mkdir jadx2.将存储库克隆到目录 git clone https://github.com/skylot/jadx.git 3. 进入 jadx目录 cd jadx 4.执行编译 等待片刻 ./gradlew dist出现这个就代表安装好了。 5.最后找到 jadx-gui 可执行文件&#xff0c;双击两下…

Spring Cloud微服务网关Zuul过滤链实现的源码解读

一、Zuul过滤器的加载过程 Zuul网关的Filter需要经过初始化加载到Spring容器后&#xff0c;才能在请求中发挥作用&#xff1a; 在上篇文章&#xff1a;《Spring Cloud微服务网关Zuul的注解EnableZuulProxy或EnableZuulServer做了什么事情》 中说到的ZuulServerAutoConfigurati…

2-23 switch、JVM内存模型、垃圾回收机制、this、static、变量的分类

文章目录 switch 实现成绩评级JVM内存模型概念栈的特点堆的特点 垃圾回收机制通用的分代垃圾回收机制三种清理算法垃圾回收过程垃圾回收常见的两种检测引用算法内存泄露常见原因 this的用法创建对象的四步 static 静态特点 变量的分类和作用域import switch 实现成绩评级 switc…

windows安装git(全网最详细,保姆教程)

1.下载git&#xff08;windows版本&#xff09; 官网下载&#xff1a;Git - Downloads 点进去后&#xff0c;进入如下界面 2.安装git &#xff08;1&#xff09;找到下载到的文件&#xff0c;进行双击进行安装 &#xff08;2&#xff09;这里是安装前的使用说明&#xff0c; …

抖音博主老隋分享的temu蓝海项目怎么做更好?

很多网友在讨论老隋分享的temu蓝海项目&#xff0c;恰巧我也是通过抖音知道的这个项目&#xff0c;经过前段时间的系统学习temu的知识&#xff0c;加上我自己也是干过电商相关的工作&#xff0c;理解起来比较容易&#xff0c;下面我就用本文详细介绍一下抖音博主老隋分享的temu…

2024年2月22日 Go生态洞察:强化切片上的通用函数

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a;…

【人工智能高频面试题--基础篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;人工智能高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 人工智能高频面试题 1.什么是人工智能&#xff1f;什么是人工智能神经网络&#xff1f;2.解释…

力扣 724. 寻找数组的中心下标

思路&#xff1a; 创建两个变量sum和sum1&#xff0c;sum代表左边元素的和&#xff0c;sum1代表右边元素的和 然后假设从数组下标0开始&#xff0c;一直到最后一个作为中心下标 如果sumsum1&#xff0c;返回此时的中心下标 如果所有下标循环完了&#xff0c;发现没有return…

F,B,Alpha Matting

https://huggingface.co/spaces/leonelhs/FBA-Mattinghttps://huggingface.co/spaces/leonelhs/FBA-Matting1.introduction matte细节要比分割多很多&#xff0c;大多数几种在增加编码器-解码器架构的分辨能力上&#xff0c;本文的特点在于同时计算alpha&#xff0c;F&#xff…

软件工程复习笔记

一、软件工程概述 软件 = 程序 + 数据 + 相关文档 软件危机(Software Crisis) 指由于落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 软件工程三要素 方法、工具、过程 软件工程目标 在给定成本、进度的…

Linux部署前后端分离项目

目录 一、jdk安装 二、tomcat安装 三、MySQL安装 四、nginx安装 五、配置多个tomcat负载&#xff0c;部署后端项目 六、前端部署 一、jdk安装 1. 上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2. 解压安装包 这里需要解压到usr/loc…

用一行代码在几秒钟内抓取任何网站

如果你正在寻找最强大的 Python 抓取工具&#xff1f;不要再看了&#xff01;这一行代码将帮助你立即启动并运行。 Scrapeasy Scrapeasy 是一个 Python 库&#xff0c;可以轻松抓取网页并从中提取数据。它可用于从单个页面抓取数据或从多个页面抓取数据。它还可用于从 PDF 和…

【串口工具实战】关于USB转TTL工具的推荐

好的工具使用不但可以提高工作效率而且能够带来稳定性 一、更新日志 2024/02/26 A1.0 初稿 二、前言 以前&#xff1a;USB转TTL这东西有什么讲头不就是个数据转换模组集成 现在&#xff1a;你说的都对&#xff0c;对对对 结论&#xff1a;USB转TTL工具的推荐 作为下载…

软考37-上午题-【数据库】-数据模型、数据库的三级模式和二级映像

一、考情简介 上午题&#xff1a;6分——6道选择题 下午题&#xff1a;15分——一道分析题 E-R图、关系模式&#xff1a;下午考试必考&#xff01;&#xff01;&#xff01;&#xff08;编制也要考&#xff01;&#xff09; 二、数据模型 数据模型是对现实世界数据特征的抽象…

vue项目的前端工程化思路webpack(持续更新中)

写在前面&#xff1a;现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss&#xff0c;Less……新增样式的扩展写法的编译工…

什么是Dapp

什么是Dapp Dapp&#xff08;去中心化应用&#xff09;程序的后端代码&#xff08;智能合约&#xff09;运行在一个去中心化的网络上&#xff0c;而非中心化的服务器。他们使用以太坊区块链网络作为数据存储端&#xff0c;并且用智能合约实现app的业务逻辑。 特点 智能合约&am…

【C语言】linux内核__netdev_start_xmit函数

一、中文注释 // 这是一个内联函数&#xff0c;用于启动网络设备的数据包发送流程。 // 它通过网络设备操作集&#xff08;net_device_ops&#xff09;指定的特定函数 // 来启动给定数据包的发送。// ops: 指向包含网络设备操作函数的结构体的指针 // skb: 指向要发送的套接字…

2024年大路灯无广测评推荐:书客、柏曼、霍尼韦尔大路灯哪个品牌更好?

临近开学&#xff0c;护眼大路灯哪个品牌好的话题度在不断提高&#xff01; 有人说大路灯是“智商税”&#xff0c;但也有人说“学生党福音”、“照明神器”&#xff0c;吸引了大量人群的关注。在没用过大路灯之前我也很担心在担心是否是智商税的问题&#xff0c;直到我自己入…

AIGC实战——扩散模型(Diffusion Model)

AIGC实战——扩散模型 0. 前言1. 去噪扩散概率模型1.1 Flowers 数据集1.2 正向扩散过程1.3 重参数化技巧1.4 扩散规划1.5 逆向扩散过程 2. U-Net 去噪模型2.1 U-Net 架构2.2 正弦嵌入2.3 ResidualBlock2.4 DownBlocks 和 UpBlocks 3. 训练扩散模型4. 去噪扩散概率模型的采样5. …