1. String

1.1 概述

 * java.lang.String : 是字符串类 底层就是一个final修饰的char数组,所以String很多特性就是数组的特性,* * 比如 一旦确定,长度 不能更改* * 1 字符串一旦创建,这个字符串对象不能再更改* * 2 为了提升字符串的访问和存储效率,java虚拟机采用了一种缓存机制,把字符串都保存在了字符串常量池中* * 3 在程序执行过程中,假如要用到一个字符串a   String s1 = "a";先去字符串常量池中检索,是否有a, 如果没有就创建一份*            假如 有了 String s2 = "a"; 就不再创建,把已有的这个a 返回* *       所以 导致 String s1 = "a"  String s2 = "a" 此时 使用 s1 == s2  他也是true,因为他们指向同一个字符串对象  就是 a

1.2 基本使用

// 第一部分  创建1个对象 ,因为他们都指向常量池String s1 = "a";String s2 = "a";// 比较值 trueSystem.out.println(s1.equals(s2));// 比较地址 trueSystem.out.println(s1 == s2);// String一旦创建不能更改的意思,并不是这个s1变量不能更改,而是 变量指向的对象中的数据不能更改s1 = "b";// 第二部分,如果使用了new的方式,那么会创建堆内存对象,该字符串对象会保存在堆内存中String s3 = new String("a");String s4 = new String("a");// 因为s3和s4不指向常量池,而是分别指向了堆内存,所以地址不同,为falseSystem.out.println(s3 == s4);// 但是String中覆写了equals方法,比较值,所以是trueSystem.out.println(s3.equals(s4));

1.3 不要频繁拼接

public static void main(String[] args) {String[] arr = { "a", "b", "c" };String s1 = "";for (int i = 0; i < arr.length; i++) {s1 += arr[i];}System.out.println(s1);}
 * 因为字符串创建之后不能更改,如果频繁拼接的话,效率很低,并且垃圾回收可能也会出现问题

1.4 构造方法

// 1 字面量String s1 = "asad";// 2String s2 = new String("xxx");// 3 字节数组byte[] bytes = { 97, 98, 99, 100, 101, 102 };String s3 = new String(bytes);// abcdefSystem.out.println(s3);// 4 字节数组 , 只截取一部分 , 4表示起始下标(包含) , 2 表示个数String s4 = new String(bytes, 4, 2);// efSystem.out.println(s4);// 5 字符数组char[] chars = { 'a', 'b', 'c', 'd' };String s5 = new String(chars);System.out.println(s5);// 6 字符数组  , 只截取一部分 , 1表示起始下标(包含) , 2 表示个数String s6 = new String(chars,1,2);System.out.println(s6);

1.5 常用方法

 * 常用方法* * 学习API : 1 功能是什么 *          2 入参和出参是什么 *            3 怎么用
// 1 char charAt (int index ) : 返回该字符串中,指定位置的字符String s1 = "qwehihasd";char c1 = s1.charAt(2);// eSystem.out.println(c1);// 2 boolean endsWith(String suffix) : 判断该字符串是否以指定字符串结尾// boolean startsWith(String prefix) : 同上,判断开始System.out.println("Hello.java".endsWith(".java"));// 注意空格 , 有空格就匹配不上了System.out.println("Hello.java".endsWith(".java "));// 3 boolean equalsIgnoreCase(String str) : 不区分大小写比较两个字符串是否相等System.out.println("abc".equalsIgnoreCase("aBc"));// 4 byte[] getBytes() : 把字符串转换为字节数组并返回byte[] bytes = "abc".getBytes();for (int i = 0; i < bytes.length; i++) {System.out.println(bytes[i]);}// 5 char[] toCharArray() : 把字符串转换为字符数组并返回char[] chars = "abc".toCharArray();for (int i = 0; i < chars.length; i++) {System.out.println(chars[i]);}// 6 int indexOf(String str) : 获取该字符串中指定字符串的起始索引,找不到返回-1System.out.println("askdhqwbe".indexOf("kd")); // 2System.out.println("askdhqwbe".indexOf("kda")); // -1// 7 int indexOf(String str,int index) :// 从指定位置开始查找(包含),获取该字符串中指定字符串的起始索引,找不到返回-1System.out.println("askdhaqwbe".indexOf("a", 5)); // -1// 8 index lastIndexOf(String str) : 同上,最后一次出现的索引 找不到返回-1System.out.println("askdhaqwbe".lastIndexOf("a")); // 5// 9 int length() : 返回该字符串的长度System.out.println("abc".length());// 10 String replaceAll(String regex . String replacement);// 替换指定字符,支持正则表达式// String replace (String str . String replacement); 不支持正则表达式// 用1 把 a 替换了并返回新的字符串// 支持正则表达式,但是没有写正则表达式 是没有区别的System.out.println("hucgasdqweasd".replaceAll("a", "1"));System.out.println("hucgasdqweasd".replace("a", "1"));// 因为 . 在正则表达式中,代表任意字符System.out.println("qwe.rty.yui.uio".replaceAll(".", ","));// 可以使用 \ 转义System.out.println("qwe.rty.yui.uio".replaceAll("\\.", ","));System.out.println("qwe.rty.yui.uio".replace(".", ","));// 11 String[] split(String regex) : 分割字符串,返回字符串数组,支持正则表达式,注意 .....// 点,需要转义String s2 = "2022.1.14";String[] arr = s2.split("\\.");for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}// 12 String substring(int begin);获取该字符串中,以某个下标起始的子字符串(包含)System.out.println("abcdef".substring(2));// cdef// 13 String substring(int begin, int end) :// 获取该字符串中,以某个下标起始(包含)到某个下标结束的子字符串(不包含)System.out.println("abcdef".substring(2, 4));// cd// 14 String trim() : 去除字符串两边的空格System.out.println("            a                    d                  sadasd                      ");System.out.println("            a                    d                  sadasd                      ".trim());// 15 String toUpperCase() : 转大写// String toLowerCase() : 转小写System.out.println("asd".toUpperCase());// 16 static String valueOf(Object obj) :// 调用该对象的toString方法,如果为null,则不再调用toString而是返回字符串nullString_05 s = null;// 打印一个引用类型的时候,会自动调用String的valueOf 所以 会自动调用toString方法System.out.println(s);

1.6 注意

     // 1String a = "a";String b = "b";String str = "ab";// 字面量相加 在编译阶段,就把+去掉了String d = "a" + "b";// trueSystem.out.println(d == str);// trueSystem.out.println(d.equals(str));// 变量相加,因为变量的值是可变的,运算之前没有办法确定变量的值,// 所以没有办法优化,只能转换为new的方式,重新创建并拼接字符串String c = a + b;String e = a + "b";// falseSystem.out.println(c == str);// trueSystem.out.println(c.equals(str));

// 1String a = "a";String b = "b";String str = "ab";// 字面量相加 在编译阶段,就把+去掉了String d = "a" + "b";// trueSystem.out.println(d == str);// trueSystem.out.println(d.equals(str));// 变量相加,因为变量的值是可变的,运算之前没有办法确定变量的值,// 所以没有办法优化,只能转换为new的方式,重新创建并拼接字符串String c = a + b;String e = a + "b";// falseSystem.out.println(c == str);// trueSystem.out.println(c.equals(str));//  上面相加 因为变量的值 无法确定 , 如果声明为常量,则可以优化String str1 = "ab";final String a1 = "a";final String b1 = "b";String c1 = a1+b1;System.out.println(c1==str1);

     // 创建几个对象? 1个 String xx = "a"+"b" +"c"+"d";

2. StringBuffer和StringBuilder

2.1 概述

 * StringBuffer和StringBuilder : 都是字符串缓冲区,可以做拼接操作\* * StringBuffer和StringBuilder和String区别* *  String : 底层是char数组,定长,一旦创建,不可更改,不合适做字符串拼接操作* * StringBuffer和StringBuilder : 底层是char数组,变长,预先在内存中申请一块空间,用来保存很多字符*         如果预留空间不够了,会进行自动扩容*      默认容量为 16,扩大容量  (当前容量+1)*2   16->34->70* * StringBuffer和StringBuilder 的区别 *       StringBuffer 线程安全,在多线程环境下,不会出现问题*       StringBuilder 非线程安全,在多线程环境下,可能会出现问题

2.2 基本使用

     // 创建一个对象StringBuilder sb = new  StringBuilder();String[] arr = {"a","b","c"};for (int i = 0; i < arr.length; i++) {// append 就是添加数据,做拼接操作// 可以链式调用sb.append(arr[i]).append(",");}// toString可以把StringBuilder转换为String类型String str = sb.toString();System.out.println(str);

2.3 常用方法

// 可以链式调用sb.append(arr[i]).append(",");}// 反转sb.reverse();// 获取已有元素个数System.out.println(sb.length());// 当前容量(数组长度)System.out.println(sb.capacity());// toString可以把StringBuilder转换为String类型String str = sb.toString();

3. 包装类

3.1 概述

【问】想要对基本类型数据进行更多的操作,怎么办?
【答】最方便的方式就是将其封装成对象。因为在对象描述中就可以定义更多的属性和行为对该基本数据类型进行操作。我们不需要自己去对基本类型进行封装,JDK已经为我们封装好了。
【概念】
1. 装箱就是自动将基本数据类型转换为包装器类型
2. 拆箱就是自动将包装器类型转换为基本数据类型

3.2 使用

// 基本类型byte b1 = 12;// 封装为包装类Byte b2 = new Byte(b1);m1(b2);long l1 = 123L;Long l2 = new Long(l1);

3.3 Integer

3.3.1 基本使用

     // 最大值System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);System.out.println(Long.MAX_VALUE);System.out.println(Double.MAX_VALUE);// 创建对象Integer i1 = new Integer(123);// 传递字符串也可以,但是必须是纯数字Integer i2 = new Integer("1231");// 报错 java.lang.NumberFormatException: For input string: "1231a"Integer i3 = new Integer("1231a");

3.3.2 相互转换

     // int ---> IntegerInteger i1 = new Integer(123);i1 = Integer.valueOf(123);// Integer --> intint i2 = i1.intValue();// String --> integerInteger i3 = new Integer("123");i3 = Integer.valueOf("123");// Integer --> String String string = i3.toString();// int --> StringString string1 = 123+"";// String --> int // 重要 static int parseInt(String str) : 把纯数字的字符串转换为int类型int i4 = Integer.parseInt("123");

3.3.3 常用方法

     // String --> int // 重要 static int parseInt(String str) : 把纯数字的字符串转换为int类型int i4 = Integer.parseInt("123");double d1 = Double.parseDouble("2.4");// 把数字以二进制的字符串形式,并返回String s1 = Integer.toBinaryString(10);// 同上,八进制s1 = Integer.toOctalString(10);// 同上,十六进制s1 = Integer.toHexString(10);System.out.println(s1);

3.3.4 自动装箱和自动拆箱

 * java1.5新特性 自动装箱和自动拆箱*         装箱 : 基本类型 到 包装类类型 *         拆箱 : 包装类类型 到 基本类型* * 八种包装类 都覆写了 toString 和 equals()方法
public static void main(String[] args) {// 1.5 之前这么写Integer i1 = Integer.valueOf(123);int i2 = i1.intValue();// 1.5 开始Integer i3 = 123; // 编译之后 就等于 Integer i3 = Integer.valueOf(123);int i4 = i3; // 编译之后 就等于 int i4 = i3.intValue(); m1(i3);// 1234为int类型,会先进行自动装箱为 Integer类型,然后再发生多态转型为Object类型m1(1234);}public static void m1(Object obj){System.out.println(obj);}

3.3.5 深入整型常量池

int i = -128;System.out.println(-i);Integer i1 = new Integer(10);Integer i2 = new Integer(10);// falseSystem.out.println(i1 == i2);// trueSystem.out.println(i1.equals(i2));Integer i3 = Integer.valueOf(-126);Integer i4 = Integer.valueOf(-126);// trueSystem.out.println(i3 == i4);Integer i5 = 12; // 编译之后 Integer.valueOf(12);Integer i6 = 12;// trueSystem.out.println(i5 == i6);Integer i7 = 222; // 就等于 new Integer(222)Integer i8 = 222;// false , 因为整型常量池的范围在 -128 ~ 127之间System.out.println(i7 == i8);
// 判断当前这个数值 是否在 -128~127之间
如果不再范围内  就直接new对象




3.3.6 总结

 * 简单来说,常量池就是提前准备好一些对象,当我们要保存数据的时候,发现已经创建好了,就直接拿走,不需要重新创建* * 总结 : *      当我们 通过 new Integer(xx) 创建对象的时候, 不管值是多少,. == 永远是false* *       当我们使用 Integer i1 = xxx; 这种方式的时候,编译之后 会转换为Integer.valueOf() ; 这种方式会经过整型常量池*         假如  xxx这个值  在 -128 到127之间 则 不需要new对象,而是使用常量池中已创建好的对象*       否则 不再范围内, 则还是等于 new Integer(xxx) 这种方式* *        因此 *            Integer i1 = xxx;*             Integer i2 = xxx;  如果 xxx 在-128 ~ 127 之间 则 i1 == i2 是 true*      但是 注意 Integer类型之间的比较 还是要用 equals 进行比较才最好

4. System

4.1 概述

System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
此方法适于计算时间差。System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。
由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便 的进行调用。
成员变量
System类内部包含in、out和err三个成员变量,分别代表标准输入流
(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
成员方法
native long currentTimeMillis():
该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时
间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
void exit(int status):
该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表
异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

4.2 常用方法

// 标准输出 -- > 打印到控制台System.out.println(123);// 表示错误, 以红色字体 展示到控制台System.err.println(123);// in 表示标准输入,接收控制台输入的信息new Scanner(System.in);// 获取时间原点到当前时间的毫秒数(1970.1.1 8:0:0)long startTime = System.currentTimeMillis();System.out.println("正在执行");long endTime = System.currentTimeMillis();System.out.println("耗时 : "+(endTime-startTime));// 退出JVM虚拟机,0表示正常关闭,1 表示异常关闭 , 一般用于图形界面 关闭窗口System.exit(0);// 执行不到System.out.println("==============");

5. Date

5.1 概述

获取时间和时间操作

5.2 构造方法

     // 获取当前系统时间Date d1 = new Date();// 传入毫秒数,获取时间原点到指定毫秒数的时间Date d2 = new Date(1000);// Fri Jan 14 16:15:57 CST 2022System.out.println(d1);// Thu Jan 01 08:00:01 CST 1970System.out.println(d2);

5.3 常用方法

     // 1642148327849 获取指定时间的毫秒数System.out.println(d1.getTime());// 把时间转换为 字符串类型System.out.println(d1.toString());

5.4 格式化

     /*** 年  y* 月 M* 日 d* 时 H* 分 m* 秒 s* 毫秒 S */// 创建时间格式化对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");// 格式化,返回字符串String string = sdf.format(d1);System.out.println(string);// 时间格式的字符串  转换为Date对象String strDate = "2022/01/14 16:21:36";// 格式化对象的时间格式  要和字符串的格式 一致sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");// 转换  返回Date对象Date date = sdf.parse(strDate);System.out.println(date);

5.5 Calendar

// 获取当前日历Calendar c = Calendar.getInstance();// 获取当前是本周第几天 , 周日是第一天System.out.println(c.get(Calendar.DAY_OF_WEEK));// 年System.out.println(c.get(Calendar.YEAR));// 月 , 0 是1月 , 11是12月, 所以 结果 +1 才是正确的System.out.println(c.get(Calendar.MONTH)+1);// 日 获取今天是当前月中第几天System.out.println(c.get(Calendar.DAY_OF_MONTH));// 时  12小时制System.out.println(c.get(Calendar.HOUR));// 24小时制System.out.println(c.get(Calendar.HOUR_OF_DAY));// 分System.out.println(c.get(Calendar.MINUTE));// 秒System.out.println(c.get(Calendar.SECOND));

6. Random

6.1 概述

随机数 从 0 开始

6.2 使用

// 创建随机数生成器Random r = new Random();// 在int范围内 随机生成一个数字int i = r.nextInt();System.out.println(i);// 传入10  说明要在 0~9之间生成i = r.nextInt(10);System.out.println(i);// 生成 10~22  // nextInt(最大值 - 最小值 + 1) + 最小值int result = r.nextInt(100 - 20 + 1) + 20;System.out.println(result);

2022.01.14_Java学习总结_常用API_String、StringBuffer和StringBuilder、System、Date、Random相关推荐

  1. HTML学习笔记_常用标签的使用及注意事项

    html学习笔记 本文根据B站pink老师的视频整理而成,包含常用标签的使用及注意事项. 注意:本篇文章排版不好看,不方便大家阅读,重新排版后的文章在这里:HTML学习笔记 | 常用标签的使用及注意事 ...

  2. 2022.02.09_Java学习总结_网络编程、正则表达式

    1. 网络编程 1.1 概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接, ...

  3. 2022.02.10_Java学习总结_新特性

    1. Lambda表达式 1.1 介绍 Lambda表达式是一种没有名字的函数,也可称为闭包,是Java 8 发布的最重要新特性. 本质上是一段匿名内部类,也可以是一段可以传递的代码. 还有叫箭头函数 ...

  4. 黑马学习笔记_常用API总结(二)

    --- android培训.java培训.期待与您交流! ---- 正则表达式 规则字符在java.util.regex Pattern类中 A: 字符x 字符 x.举例:'a'表示字符a\\ 反斜线 ...

  5. java stringbuilder换行_初遇Java StringBuffer 和 StringBuilder 类利用 StringBuilder 给TextView实现换行处理...

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...

  6. java常用类-StringBuffer,StringBuilder

    StringBuffer,StringBuilder篇 String, StringBuffer, StringBuilder三者的异同: String:不可变字符序列:底层用char[ ]存储 St ...

  7. sigmoid函数_常用的激活(激励)函数——深度学习笔记(建议收藏)

    激活函数(又叫激励函数,后面就全部统称为激活函数)是模型整个结构中的非线性扭曲力,神经网络的每层都会有一个激活函数.那他到底是什么,有什么作用?都有哪些常见的激活函数呢? 深度学习的基本原理就是基于人 ...

  8. 微擎学习随记_常用功能实现

    微擎学习随记_常用功能实现 消息通知: 代码位置: addons/项目名/core/model/notice.php(设置微信信息通知和微信模板消息通知) 需求: 店铺得到收益之后以消息的形式通知店铺 ...

  9. 图论01.最短路专题_学习笔记+模板

    图论01.最短路专题_学习笔记+模板 一.定义与性质 ● 需要的前导知识点 路径 最短路 有向图中的最短路.无向图中的最短路 单源最短路.每对结点之间的最短路 ● 最短路的性质 对于边权为正的图,任意 ...

最新文章

  1. 老毛桃u盘启动pe重建mbr图文教程
  2. 基于matlab_simulink汽车三自由度模型仿真
  3. poj1201Intervals(差分约束)
  4. win10计算机里文件夹怎么删除文件,如何删除win10“此电脑”中6个文件夹?
  5. 关于excel表的生成
  6. linux进程管理——进程管理相关命令
  7. 欧几里得求最大公约数--JAVA递归实现
  8. oracle的exp程序,数据库expimp迁移的整个过程,及注意事项
  9. javascript 计算每行中的列数
  10. Oracle递归查询所有树结构,并确定其中的一条分支
  11. vscode编写php好用吗,vscode可以编写php吗
  12. 机器学习中特征空间、欧式空间、希尔伯特空间以及特征空间
  13. SCHMIDT SS 20.260 506690传感器ALRE JTF-1/12湿度检测器
  14. html空格符的代码用转义字符怎么表示,html空格符号标签 空格符号怎么打出来HTML?...
  15. Squid中文权威指南-第10章 与其他Squid会话
  16. 已经拍好的视频怎么加水印?视频加水印方法大分享
  17. 安装PhotoShop报错 无法写入注册表值请检查权限(错误代码160)
  18. 怎么用计算机直接截图,电脑怎么快速截屏?分享电脑快速截屏的五种方法
  19. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换
  20. 2021年安全员-B证考试及安全员-B证考试内容

热门文章

  1. [VC/MFC]一条语句实现程序运行时隐藏窗口
  2. 2021-07-18accelerated c++1-2章阅读笔记
  3. 2021-06-19Leetcode312.戳气球
  4. iis服务器添加ssl证书,Windows 服务器 IIS 7.0和8.0添加SSL证书教程【图解】
  5. 视频质量评价方法:VQM
  6. C语言入门我们都需要什么?
  7. 2012迅雷会员帐号
  8. openwrt编译kcptun报错proxy.golang.org 无法下载
  9. iphone已停用怎么解锁_苹果手机锁屏密码忘了怎么办?北京iPhone维修点分享解锁方法...
  10. 2021.10.20市场行情煤炭股集体跳水!