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类型的包装对象//通过构造方法 newInteger a = new Integer(10);System.out.println(a);//10Integer b = new Integer("8");System.out.println(b);//8//通过valueOf()方法Integer c = Integer.valueOf(10);System.out.println(c);//10Integer d = Integer.valueOf("8");System.out.println(d);//8//非静态方法 直接对包装对象中的值操作int i = a.compareTo(b);//比较大小 返回-1 0 1System.out.println(i);//1System.out.println(a == b);//地址比:falseSystem.out.println(a.equals(b));//数值比:falseint j = a.intValue();//取出包装类型中的基本数据类型的值System.out.println(j);//10//静态方法 需要传参int e = Integer.compare(10, 8);System.out.println(e);//1String 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);//trueSystem.out.println(a.equals(b));//trueInteger c = Integer.valueOf(128);Integer d = Integer.valueOf(128);System.out.println(c == d);//falseSystem.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);//trueSystem.out.println(s1.equals(s2));//trues1 += "aaa";System.out.println(s1);String s3 = new String("abc");String s4 = new String("abc");System.out.println(s3 == s4);//falseSystem.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@1b6d3586System.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"));//trueSystem.out.println(s1.contains("ab"));//trueSystem.out.println(s1.contains("ac"));//false  //判断是否是空串""System.out.println(s1.isEmpty());//falseSystem.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);//abcString s2 = "abcDEF你好";//将字符串的所有字符转换为小写字母。System.out.println(s2.toLowerCase());//abcdef你好//将字符串的所有字符转换为大写字母。System.out.println(s2.toUpperCase());//ABCDEF你好String s3 = s2.concat("wwwww");//将指定的字符串拼接到字符串末尾,返回一个新的字符串System.out.println(s3);//abcDEF你好wwwwwString 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'));//abCdeCfgSystem.out.println(s1.replace("cd", "jj"));//abjjecfg//replaceAll()使用正则表达式匹配需要替换的内容System.out.println(s1.replaceAll("c", "CC"));//abCCdeCCfgSystem.out.println(s1.replaceFirst("c", "o"));//abodecfgString s2 = " asd sax ";System.out.println(s2.length());//9//求字符串长度System.out.println(s2.trim().length());//7System.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数组 20StringBuffer s1 = new StringBuffer("abcd");System.out.println(s1.append("efg"));//空参的构造方法 指定底层数组的长度是16StringBuffer 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:值可以改变且不需要创建新对象,由于方法上都没有枷锁,在多线程(任务)执行时是线程不安全的,适合单线程 

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

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

相关文章

vscode使用restClient实现各种http请求

vscode使用restClient实现各种http请求 一&#xff0c;安装插件 首先&#xff0c;我们要在vscode的扩展中&#xff0c;搜索rest Client&#xff0c;然后安装它&#xff0c;这里我已经安装过了。 安装后&#xff0c;我们就可以使用rest client插件进行http各种操作了。 二&…

leetcode刷题-删除链表的倒数第N个节点(一次循环)

题目描述 解题思路 这几天玩的时间比较长&#xff0c;没有坚持更新。 解题思路很简单&#xff0c;也算是比较经典的问题。首先可以通道暴力解决&#xff0c;首先计算出来链表的长度&#xff0c;然后计算出来链表的长度&#xff0c;然后找到距离删除位置的前一个位置&#xff0…

131.乐理基础-快速识别音程(一)

上一个内容&#xff1a;130.乐理基础-倍增音程、倍减音程-CSDN博客 上一个内容里练习的答案&#xff1a; 开始不用数音数就可以辨别音程的方法&#xff0c;首先是不含升降号记号的两个音&#xff08;两个白键&#xff09;该怎样判断 方法的核心&#xff0c;就是音名中e-f和b-…

代码随想录算法训练营第28天 |第七章 回溯算法part04

学习目标&#xff1a; 93.复原IP地址 78.子集 90.子集II 学习内容&#xff1a; 93.复原IP地址 /class Solution { public:// string path;vector<string> result;bool isValid(const string& s, int start, int end) {if(start>end)return false;if(s[start]0&a…

SELF-RAG 论文详解

论文&#xff1a; https://arxiv.org/pdf/2310.11511.pdf code&#xff1a; https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_self_rag.ipynb?refblog.langchain.dev 相关工作 RAG 尽管 RAG 方法可以通过检索生成得到更为准确的结果&#xff0…

Codeforce Monsters Attack!(B题 前缀和)

题目描述&#xff1a; 思路&#xff1a; 本人第一次的想法是先杀血量低的第二次想法是先搞坐标近的第三次想法看到数据量这么大&#xff0c; 我先加个和看看貌似我先打谁都行&#xff0c;由此综合一下&#xff0c; 我们可以把每一个不同的坐标当作一轮从最小的坐标开始&#x…

老子云2024全站焕新,重塑3D轻量体验

3D模型当前应用广泛&#xff0c;正以惊人的速度实现数据增长&#xff0c;轻量化需求随之增多。老子云团队一直在探索如何借助自研轻量化技术的能力&#xff0c;打破用户模型处理思维惯性&#xff0c;构建更高效、实用、简单的体验范式&#xff0c;来帮助用户解决3D素材数据处理…

开源工具和框架

目录 开源工具和框架 一、 开源工具和框架 二、开源工具和框架在现代软件开发中的角色 1、基础设施建设&#xff1a; 2、开发效率提升&#xff1a; 3、代码质量保障&#xff1a; 4、技术创新&#xff1a; 三、广泛使用的开源项目分析 3.1、Linux 3.2、Git 3.3、Docke…

js设计模式:状态模式

作用: 将对象的行为和状态进行分离,状态是由行为操作决定的,而不是直接控制。 同时,行为也是由状态决定的,每个状态都有自己的行为和相应的方法 行为与状态分离,可以使代码方便维护 示例: <!DOCTYPE html> <html lang"en"><head><meta cha…

THE TRAVELING OBSERVER MODEL

FiLM (Perez et al., 2018) 作者未提供代码 参考文献 [1] E. Perez, F. Strub, H. de Vries, Vincent Dumoulin, and Aaron C. Courville. Film: Visual reasoning with a general conditioning layer. In Proc. of AAAI, 2018.

华为OD机试真题-万能字符单词拼写-2023年OD统一考试(C卷)---Python3--开源

题目&#xff1a; 考察内容&#xff1a; str.repalce(old, new, 1); flag 代码&#xff1a; """ 题目分析&#xff1a; 没有掌握&#xff0c;输出为0 输入&#xff1a; words的个数&#xff0c; N int 每个字符串元素输出&#xff1a; 词汇表words中掌握的单…

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程

软件实际应用实例&#xff0c;茶楼收银软件管理系统操作流程&#xff0c;茶室计时计费会员管理系统软件试用版教程 一、前言 以下软件以 佳易王茶社计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、计时计费&…

SpringBoot:数据访问-整合 Druid 配置数据源监控

点击查看数据访问demo&#xff1a;LearnSpringBoot06DataJdbc 点击查看更多的SpringBoot教程 简介 Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。 一、添加druid-spring-boot-starter依赖 点击查询最新版 <dependency&g…

正版IDM多少钱?如何便宜购买序列号

IDM是一款互联网下载神器&#xff0c;它的全称是Internet Download Manager&#xff0c;可以将下载速度提升至5倍以上。那么IDM正版多少钱&#xff1f;如何才能买到正版IDM序列号呢&#xff1f; 正版IDM的价格根据付费模式和购买渠道不同&#xff0c;所需要的价格也是不同的。…

Vulnhub靶机:Hacker_Kid

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;Hacker_Kid&#xff08;10.0.2.42&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhub.com/hac…

zkLogin如何使加密学变得更快更安全

*本篇来自Mysten Labs官方blog&#xff0c;文中“我们”指代该组织。 zkLogin不仅是将更多用户引入Web3应用的一次革命性飞跃&#xff0c;其开发还使零知识&#xff08;ZK&#xff09;API变得更安全更快速。然而&#xff0c;开发zkLogin&#xff0c;Sui的OAuth认证原语&#x…

全网唯一基于共享内存的C++ RPC框架

首先声明&#xff1a;我不是标题党&#xff0c;我是在找遍全网&#xff0c;没有找到一个基于共享内存实现、开源且跨平台的C RPC框架之后&#xff0c;才着手开发的这个框架。 项目地址&#xff1a;https://github.com/winsoft666/veigar 1. Veigar Veigar一词来源于英雄联盟里…

彩虹全新 SUP 模板,卡卡云模板修复版

彩虹全新 SUP 模板&#xff0c;卡卡云模板&#xff0c;首页美化&#xff0c;登陆页美化&#xff0c;修复了 PC 端购物车页面显示不正常的问题。下载地址&#xff1a;彩虹全新 SUP 模板.zip 模板截图

vscode 设置打开中断的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

音视频开发之旅(69)-SD图生图

目录 1. 效果展示 2. ControlNet介绍 3. 图生图流程浅析 4. SDWebui图生图代码流程 5. 参考资料 一、效果展示 图生图的应用场景非常多&#xff0c;比较典型的应用场景有风格转化&#xff08;真人与二次元&#xff09;、线稿上色、换装和对图片进行扩图等&#xff0c;下面…