Javase | Java常用类 (不断补充中...)

目录:

    • 1.Object类
    • 2.String类
    • 3.StringBuffer类
    • 4.Math类
    • 5.Random类
    • 6.包装类
    • (不断补充中...)

1.Object类

Object类是Java语言中的所有类的超类,即所有类的它中描述的所有方法,所有类都可以使用

  • equals( ) : 指示其他某个对象与此对象“是否相等” (比较的是两个对象的“内存地址”是否相同,一般要重写该方法)
  • toString( ): 返回该对象的字符串表示 (是该对象的唯一标识: 类名+@+该对象的哈希码值的16进制字符串表示 / 类名+@+内存地址值),一般会重写 toString( ) 方法
  • hasCode( ): 返回该对象的哈希码值
public class Rectangle { //长方形类private int length;private int width;public int getLength() {return length;}public void setLength(int length) {this.length = length;}public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}//重写toString()方法@Overridepublic String toString() {return "Rectangle{" +"length=" + length +", width=" + width +'}';}@Override  //重写equals()方法: 改掉之前其是判断对象的内存地址是否一致的判断内容public boolean equals(Object obj) {Rectangle r = (Rectangle) obj;//如果两个长方形的长和宽相等,则其是相等的、相同的if (this.length == r.getLength() && this.width == r.getWidth()) {//重写了equals()方法让其判断长宽,而不是判断两个对象的内存地址是否相等return true;} else {return false;}}
}

2.String类

String类不可变字符串,一旦String类被创建,该对象中的字符序列将不可改变

String的两种初始化方式:

  • 字符串赋值方式:
    如: String str1 = “helloWorld”;
    这种方式创建字符串时,JVM首先会检查字符串常量池中是否有该“字符串对象”,如果字符串常量池存在该对象,那就不会在字符串常量池中再创建了,直接返回该字符串对象在字符串常量池中的“内存地址”。 如果字符串常量池中不存在该对象,那就先在字符串常量池值中创建该“字符串对象”,后返回
    常量池中的内存地址

  • 构造函数初始化方式:
    如: String str2 = new String(“hello world”);
    用这种方式创建字符串的时候,JVM首先会检查“字符串常量池”中 是否存在该对象(helloworld)。
    如果存在 则不会在字符串常量池中创建了。后会到堆内存中创建一份字符串的对象(String对象 ),
    字符串常量池中的 “helloWord”字符串内容拷贝到内存中的字符串对象中,最后返回堆内存字符串对象(String)的“内存地址”。
    如果不存在,会先在字符串常量池中创建"HelloWorld"字符串,后到堆内存中创建一份字符串String对象,把字符串常量池中的“helloWorld”拷贝到堆内存中的字符串对象中。最后返回堆内存中字符串对象的“内存地址”。

  •     /*如果字符串常量池中有该字符串,则返回其在字符串常量池中的内存地址。如果字符串常量池中没有该字符串,先在常量池中创建,后返回其在字符串常量池中的“内存地址”。*/String str1 = "hello world";/**   如果字符串常量池有“hello World”字符串存在,则不会在字符串常量池中创建。后在堆内存中创建一个字符串对象,把常量池中的该对象拷贝到堆内存的* 字符串对象中。最后返回堆内存中的字符串对象的“内存地址”给: str2(对象的引用,存储的是该对象的内存地址)*   如果字符串常量池中的“hello World”字符串不存在,则先在字符串常量池中创建。后在堆内存中创建一个字符串对象,把常量池中的该对象拷贝到堆内存的* 字符串对象中。最后返回堆内存中的字符串对象的“内存地址”给: str2*/String str2 = new String("hello World");
    
  • public class Demo1 {public static void main(String[] args) {//用构造方法创建一个String字符串对象String str1 = new String("abcd");//先检查字符串常量池中有没有...,后在堆内存中创建字符串对象...,最后返回该对象的内存地址System.out.println("str1=" + str1);//通过byte数组来创建字符串对象byte[] buf = {97, 98, 00, 100, 101, 102};String str2 = new String(buf);System.out.println("str2=" + str2);//从字节数组的下标1开始,长度为3来创建字符串对象String str3 = new String(buf, 1, 3); System.out.println("str3="+str3);//用字符数组来创建字符串char[] c = {'我', '是', '一', '个', '学', '生'}; //字符数组String str4 = new String(c);System.out.println("str4="+str4);String str5 = new String(c, 1, 3); //从字符数组的下标1开始,长度为3来创建字符串对象}
    }
    
  • public class Demo2 {public static void main(String[] args) {String str = "safANFiohkla12312sfbajksbhjkRFS";computerNumber(str);}private static void computerNumber(String str) {int bigCount = 0; //大写字母的个数int smallCount = 0; //小写字母的个数int numberCount = 0; //数字的个数for (int i = 0; i < str.length(); i++) {//获取指定位置上的字符char ch = str.charAt(i); //获得字符if (ch >= 'A' && ch <= 'Z') { //该字符在这个范围内,则其是大写字母bigCount++;} else if (ch >= 'a' && ch <= 'z') { //小写字母的范围smallCount++;}else if (ch >= '0' && ch <= '9') //0-9数字的范围numberCount++;}System.out.println("小写字母的个数为: " + bigCount);System.out.println("大写字母的个数为: " + smallCount);System.out.println("数字个数为: " + numberCount);}
    }
    
  • /*将字符串中第一个字母转换为大小,其他转换为小写,并打印改变后的字符串*/
    public class Demo2 {public static void main(String[] args) {//创建一个字符串对象String str = "abcadASDAF";System.out.println(covert(str));}//将第第一字母转换为大写,其他字母转换为小写private static String covert(String str) {//获取第一个字母String start = str.substring(0, 1); //左开右闭//获取除第一个字母之外的其他字母String end = str.substring(1); //从下标1开始往后的字母//将第一个字母转换为大写String big = start.toUpperCase();String small = end.toLowerCase();//把这两部分字符串连接在一起,得到一个完整的字符串return big + small;}
    }
    

3.StringBuffer类

  • String类不可变字符串,一旦 String类被创建,该对象中的 字符序列将不可改变

  • 不同于StringStringBuffer(字符串缓冲类)的“内容长度”是可变的。StringBuffer类似于一个
    字符容器,在其中不断添加和删除字符时,并不会产生新的StringBuffer对象。

    (ps: 字符串加入到StringBuffer后,将转换为一堆字符存储在其中

  • public class Demo {public static void main(String[] args) {//使用StringBuffer的无参构造方法创建一个字符缓冲类StringBuffer sb = new StringBuffer();System.out.println(sb);//输出空白,因为该字符串缓冲类中还没有数据//往字符串缓冲类中添加字符串sb.append("abcdabcfaabc");System.out.println(sb);//在指定的索引位置下插入数据sb.insert(2, "小明"); //索引2下的插入一个字符串,如有冲突会将其中的字符往后挤。System.out.println(sb);//删除指定范围内的数据sb.delete(3, 6); //左开右闭System.out.println(sb);//根据指定的索引删除指定的一个字符sb.deleteCharAt(5);System.out.println(sb);//将指定范围的索引替换为想要替代的“字符串” ---字符串添加到字符串缓冲区中就变成字符,操作的也是其中的字符sb.replace(1, 5, "陈小明");System.out.println(sb);//翻转字符串的中内容sb.reverse();System.out.println("翻转: "+sb);//将指定索引下的字符替换成你想要换的字符sb.setCharAt(3, '红');System.out.println(sb);//截取子串String subString = sb.substring(2,5);//左闭右开System.out.println("子串的内容为: " + subString);//查找指定的“字符串”在StringBuffer中第一次出现的索引值int index = sb.indexOf("abc", 0); //从索引0处开始往后找System.out.println("索引值为: "+index); //如没找到时,返回-1//追加数据sb.append("JavaJava");System.out.println(sb);//查看字符数组的长度System.out.println("字符数组长度为: "+sb.capacity());//查看StringBuffer的长度System.out.println("StringBuffer中字符个数为(长度为): " + sb.length());//根据指定的索引找指定位置的字符System.out.println("指定索引位置的字符为: " + sb.charAt(5));System.out.println(sb);}
    }
    

4.Math类

  • Math 类是包含执行基本数学运算的方法的“数学工具类”,如初等指数、对数、平方和三角函数等。

  • Math类的两个常量: PI(常量π) 和 E(常量e)

  • Math类特点:
    所有方法静态方法,并且一般不会创建对象

  • public class MathTest { //Math类的相关内容public static void main(String[] args) {//ceil()方法,结果为比参数值大的最小整数的double值double d1 = Math.ceil(3.3); //4.0double d2 = Math.ceil(-3.3); //-3.0double d3 = Math.ceil(5.1); //6.0System.out.println(d1 + " " + d2 + " " + d3);//floor方法, 结果为比参数值小的最大整数的double值double d4 = Math.floor(3.3); //3.0double d5 = Math.floor(-3.3);//-4.0double d6 = Math.floor(5.1); //5.0System.out.println(d4 + " " + d5 + " " + d6);//round方法,返回参数四舍五入的结果double d7 = Math.round(5.5); //6double d8 = Math.round(5.4);//5System.out.println(d7 + " " + d8);//max方法,返回两个参数中值较大的值double d9 = Math.max(3.3,5.5); //5,5double d10 = Math.max(-3.3,-5.5);//-3.3System.out.println(d9 + " " + d10);//min方法同理//random方法,产生一个大于等于0.o小于1.0的double小数System.out.println("--------------------");double d11 = Math.random(); //产生一个大于等于0.0 小于1.0的double值System.out.println(d11);}
    }
    

5.Random类

  • JDK的包下有一个Random类,它可以在 指定的取值范围内(自定义范围)产生随机数
    Random类有两个构造方法

  • 如果使用相同的种子,那么产生的随机数序列是一样的,这就意味着如果想要生成相同的随机数序列,那么种子相同即可。
    (如果两个Random对象的种子是一样的,那么两者生成的随机数也会是一样的

  • Random( ) : 生成一个为随机数生成器
    Random( long seed ) : 使用“特定的种子”来创建为伪随机数生成器(如果两个Random对象的种子是一样的,那么其生成是随机数也会是一样的)

  • public class RandomTest { //Random类的相关内容public static void main(String[] args) {/*如果使用相同的种子,那么生成的随机数序列是一样的。那就意味着, 如果想要生成相同的随机数序列,只需要使用相同的种子即可。*///创建一个没有种子的Random对象Random random1 = new Random();for (int i = 0; i < 5; i++) {//产生5个0-100之间的随机数 (左闭右开)int num = random1.nextInt(100);//左闭右开System.out.print(num+",");}System.out.println();/*因为两个Random对象没有用同一个种子,所以产生的5个随机数不一样会相等*/Random random2 = new Random();for (int i = 0; i < 5; i++) {//产生5个0-100之间的随机数 (左闭右开)int num = random2.nextInt(100);//左闭右开System.out.print(num+",");}System.out.println();System.out.println("----------------------");//创建有种子的Random对象,种子为13Random random3 = new Random(13);for (int i = 0; i < 5; i++) {//产生5个0-100之间的随机数int num2 = random3.nextInt(100);System.out.print(num2+",");}/**
    * 这里和上面用的是同一个种子的Random对象,所以产生的5个随机数和上面产生的5个随机数是一样的
    */System.out.println();Random random4 = new Random(13);for (int i = 0; i < 5; i++) {//产生5个0-100之间的随机数int num2 = random4.nextInt(100);System.out.print(num2+",");}}
    }
    

6.包装类

  • 在Java很多类都需要接入引用类型的对象,此时就无法将一个基本数据类型的值传如入
    为了解决这一系列的问题,JDK提供了一系列的包装类。通过包装类可以"基本数据类型"的值为引用数据类型对象

  • 包装类特点: 在Java中,每一种基本类型都有对应的包装类

    在这里插入图片描述

  • public class Demo1 { //包装类的相关内容public static void main(String[] args) {int i = 10; //基本数据类型double d = 20.0;//将"基本数据类型"转换为String类型String str1 = String.valueOf(i);String str2 = String.valueOf(d);System.out.println(i+" "+d);//创建包装类: IntegerInteger i1 = 20; //包装类型Double d1 = 30.0;System.out.println(i1+" "+d1);//用toString()方法,返回值为String类型//包装类中的方法被重写了,输出的值String str3 = i1.toString();String str4 = d1.toString();System.out.println(str3+" "+str4);}
    }
    
  • public class Demo2{public static void main(String[] args) {String str1 = "50";String str2 = "30.41";String str3 = "true";//用包装类的.parseInt()方法将字符串类型数据转换为int类型int num1 = Integer.parseInt(str1);//用包装类将String类型转换为double类型double num2 = Double.parseDouble(str2);boolean bool = Boolean.parseBoolean(str3);System.out.println(num1+" "+num2+" "+bool);}
    }
    
  • public class Demo3 {public static void main(String[] args) {//用包装类的valueOf()方法将String类型数据转换为"包装类型"String str1 = "50";String str2 = "30.41";String str3 = "true";//字符串转换为包装类型Integer i = Integer.valueOf(str1);Double d = Double.valueOf(str2);Boolean b = Boolean.valueOf(str3);System.out.println(i+" "+d+" "+b);}
    }
    

(不断补充中…)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PC端数据列表有头像显示头像,没有头像显示名字的第一个字

PC端数据列表有头像显示头像&#xff0c;没有头像显示名字的第一个字 .charAt(0) 是 JavaScript 字符串对象的方法&#xff0c;用于获取字符串的第一个字符。 字符串中的字符位置是从 0 开始的&#xff0c;所以.charAt(0) 就表示获取字符串的第一个字符。 <el-table ref&qu…

layui提示框没有渲染bug解决

bug&#xff1a;使用layui时或许是依赖导入又或是ideal和浏览器缓存问题导致前面明明正常的页面显示&#xff0c;后面出现提示框没有css样式&#xff0c;弹出框没有背景css 效果如下 解决后 解决方法 在你的代码中引入layer.js 我这是jsp页面 <script type"text/jav…

PHP微信UI在线聊天系统源码 客服私有即时通讯系统 附安装教程

DuckChat是一套完整的私有即时通讯解决方案&#xff0c;包含服务器端程序和各种客户端程序&#xff08;包括iOS、Android、PC等&#xff09;。通过DuckChat&#xff0c;站点管理员可以快速在自己的服务器上建立私有的即时通讯服务&#xff0c;用户可以使用客户端连接至此服务器…

Parasoft:正确的静态应用程序安全测试 (SAST) 解决方案

随着软件开发从Web应用扩展到工业物联网&#xff08;IIoT&#xff09;设备&#xff0c;静态应用安全测试&#xff08;SAST&#xff09;越来越有必要从根本上帮助确保软件的功能安全。根据 Forrester Research的研究&#xff0c;网络攻击是近两年安全漏洞的主要来源。因此&#…

聚类分析例题 (多元统计分析期末复习)

例一 动态聚类&#xff0c;K-means法&#xff0c;随机选取凝聚点&#xff08;题目直接给出&#xff09; 已知5个样品的观测值为&#xff1a;1&#xff0c;4&#xff0c;5&#xff0c;7&#xff0c;11。试用K均值法分为两类(凝聚点分别取1&#xff0c;4与1&#xff0c;11) 解&…

深入理解 Vue 中的指针操作(二)

文章目录 ☘️引言☘️基本用法&#x1f342;v-for指令&#x1f342;v-model指令&#x1f331;v-model适用表单控件 ☘️结论 ☘️引言 Vue.js 是一款非常流行且功能强大的前端框架&#xff0c;它以其响应式的数据绑定和组件化的开发方式赢得了众多开发者的喜爱。而在 Vue.js …

[node] Node.js 中Stream流

[node] Node.js 中Stream流 什么是 Stream流操作从流中读取数据写入流管道流链式流 什么是 Stream Stream 是一个抽象接口&#xff0c;Node 中有很多对象实现了这个接口。例如&#xff0c;对http 服务器发起请求的request 对象就是一个 Stream&#xff0c;还有stdout&#xff…

ExoPlayer - Failed to initialize OMX.qcom.video.decoder.avc

人莫鉴于流水而鉴于止水&#xff0c;唯止能止众止 1. 背景 使用ExoPlayer&#xff0c;我不信你没遇到过这个问题&#xff1a; java.lang.IllegalArgumentException: Failed to initialize OMX.qcom.video.decoder.avc 详细内容如下图所示&#xff1a; 2. MediaCodec(解码器) …

MySQL三大日志详细总结(redo log undo log binlog)

MySQL日志 包括事务日志&#xff08;redolog undolog&#xff09;慢查询日志&#xff0c;通用查询日志&#xff0c;二进制日志&#xff08;binlog&#xff09; 最为重要的就是binlog&#xff08;归档日志&#xff09;事务日志redolog&#xff08;重做日志&#xff09;undolog…

TCP 连接建立

1&#xff1a;TCP 三次握手过程是怎样的&#xff1f; 客户端和服务端都处于 CLOSE 状态&#xff0c;服务端主动监听某个端口&#xff0c;处于 LISTEN 状态 第一次握手&#xff1a;客户端带着序号和SYN为1&#xff0c;把第一个 SYN 报文发送给服务端&#xff0c;客户端处于 SYN-…

【动态规划】LeetCode-70.爬楼梯

&#x1f388;算法那些事专栏说明&#xff1a;这是一个记录刷题日常的专栏&#xff0c;每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目&#xff0c;在这立下Flag&#x1f6a9; &#x1f3e0;个人主页&#xff1a;Jammingpro &#x1f4d5;专栏链接&…

unity UI特效遮罩

using System.Collections; using System.Collections.Generic; using UnityEngine;/**UI特效遮罩 1.需要将ScrollRect 的遮罩Mask 换为 2D Mask2.将特效的Render里面的 Masking 设置为*/ public class UIParticleMaskControll : MonoBehaviour {// Start is called before …