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


    一.String和StringBuffer的相互转换

    1.适用场景:

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

     场景2:方法传参

    场景一演示:

    1. /*
    2. String和StringBuffer的相互转换
    3. A<-->B
    4. 什么场景需要做转换操作:
    5. 场景1:可以需要用到另一种类中的方法,来方便处理我们的需求
    6. 场景2:方法传参
    7. */
    8. public class StringBufferDemo1 {
    9. public static void main(String[] args) {
    10. //创建一个String对象
    11. String s1 = "hello";
    12. System.out.println("s1: " + s1);
    13. //String-->StringBuffer
    14. //1、使用StringBuffer构造方法
    15. StringBuffer sb1 = new StringBuffer(s1);
    16. System.out.println("sb1: " + sb1);
    17. //StringBuffer-->String
    18. //1、toString()方法
    19. StringBuffer sb2 = new StringBuffer("world");
    20. String s2 = sb2.toString();
    21. //2、截取
    22. String s3 = sb2.substring(0);
    23. System.out.println("--------------转换调用另一种类中的方法案例-------------------");
    24. //String对象字符串逆序
    25. String s4 = "abcd";
    26. System.out.println("s4: "+s4);
    27. //先转StringBuffer
    28. StringBuffer sb3 = new StringBuffer(s4);
    29. sb3.reverse();
    30. //再转回字符串String类型
    31. String s5 = sb3.toString();
    32. System.out.println("s5: "+s5);
    33. }
    34. }

    场景二演示:

    (1) String类型作为方法参数传递
    1. /*
    2. 看程序写结果:
    3. String作为参数传递
    4. StringBuffer作为参数传递: 哪一个StringBuffer对象调用方法,哪一个就会改变
    5. */
    6. public class StringBufferDemo5 {
    7. public static void main(String[] args) {
    8. String s1 = "hello";
    9. String s2 = "world";
    10. change(s1, s2);
    11. System.out.println("s1: " + s1 + ", s2: " + s2); //s1: hello, s2: world
    12. public static void change(String s1, String s2) {
    13. s1 = s2;
    14. s2 = s1 + s2;
    15. System.out.println("s1: " + s1 + ", s2: " + s2); //s1: world, s2: worldworld
    16. }
    17. }

     内存图解:

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

    演示:

    1. /*
    2. 看程序写结果:
    3. String作为参数传递
    4. StringBuffer作为参数传递: 哪一个StringBuffer对象调用方法,哪一个就会改变
    5. */
    6. public class StringBufferDemo5 {
    7. public static void main(String[] args) {
    8. StringBuffer sb1 = new StringBuffer("hello");
    9. StringBuffer sb2 = new StringBuffer("world");
    10. change(sb1, sb2);
    11. System.out.println("sb1: " + sb1 + ",sb2: " + sb2); //sb1:hello sb2:worldworld
    12. }
    13. public static void change(StringBuffer sb1, StringBuffer sb2) {
    14. sb1 = sb2;
    15. sb2 = sb1.append(sb2);
    16. System.out.println("sb1: " + sb1 + ",sb2: " + sb2); //sb1:worldworld sb2:worldworld
    17. }
    18. }

    内存图解:

     2.练习

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

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

     结果: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)         二分查找 返回查找到元素的索引

     演示:

    1. import java.lang.reflect.Array;
    2. import java.util.Arrays;
    3. /*
    4. Arrays: 该类中没有构造方法,但是有很多静态方法,这种类我们称之为工具类
    5. 静态成员方法:
    6. public static String toString(int[] a)
    7. public static void sort(int[] a)
    8. public static int binarySearch(int[] a,int key)
    9. */
    10. public class ArrayDemo {
    11. public static void main(String[] args) {
    12. //public static String toString(int[] a) 将数组以字符串的形式返回
    13. int [] arr1= {32,213,33,32,1};
    14. String s1 = Arrays.toString(arr1);
    15. System.out.println(s1); //[32, 213, 33, 32, 1] String类型
    16. //public static void sort(int[] a) 快速排序,结果是升序的
    17. Arrays.sort(arr1);
    18. System.out.println(Arrays.toString(arr1)); //[1, 32, 32, 33, 213]
    19. //public static int binarySearch(int[] a,int key) 二分查找 返回查找到元素的索引
    20. //前提:序列必须是有序的
    21. System.out.println(Arrays.binarySearch(arr1, 32)); //2
    22. //如果找不到该元素,则会按照源码的逻辑返回某个值
    23. System.out.println(Arrays.binarySearch(arr1,465)); //-6
    24. /*
    25. binarySearch()源码:
    26. public static int binarySearch(int[] a, int key) {
    27. return binarySearch0(a, 0, a.length, key);
    28. }
    29. binarySearch()方法返回值binarySearch0源码:
    30. private static int binarySearch0(int[] a, int fromIndex, int toIndex,
    31. int key) {
    32. int low = fromIndex;
    33. int high = toIndex - 1;
    34. while (low <= high) {
    35. int mid = (low + high) >>> 1;
    36. int midVal = a[mid];
    37. if (midVal < key)
    38. low = mid + 1;
    39. else if (midVal > key)
    40. high = mid - 1;
    41. else
    42. return mid; // key found
    43. }
    44. return -(low + 1); // key not found.
    45. }
    46. */
    47. }
    48. }

    三、包装类

    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)

    演示:

    1. /*
    2. java为了扩展每一个基本数据类型的功能,针对每一个基本数据类型都提供了一个对应的类,这些类统称为包装类
    3. byte: Byte
    4. short: Short
    5. int: Integer √
    6. long: Long
    7. float: Float
    8. double: Double
    9. boolean: Boolean
    10. char: Character √
    11. Integer类中的构造方法:
    12. public Integer(int value)
    13. public Integer(String s)
    14. */
    15. public class BaoZhuangDemo {
    16. public static void main(String[] args) {
    17. //public Integer(int value) 将基本数据类型int包装成引用数据类型Integer
    18. // Integer i = new Integer(100);
    19. Integer i = 100; //自动装箱 等价于上条语句
    20. System.out.println(i);
    21. System.out.println(i+1); //自动拆箱
    22. //public Integer(String s) //将String类型(例如"100")包装成Integer类型(变为100)
    23. Integer i1 = new Integer("100");
    24. System.out.println(i1); // 100 Intefer类型
    25. Integer i2 = new Integer("xuyou");
    26. System.out.println(i2); //NumberFormatException 报错的原因是不能将字符串类型的“xuyou”转化为数字的Intefer类型
    27. }
    28. }
    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

     演示:

    1. /*
    2. Integer类中的成员方法:
    3. int类型和String类型的相互转换(字符串中的内容要是数值内容)
    4. int – String
    5. String – int
    6. public int intValue() // 手动获取被包装的数值
    7. public static int parseInt(String s) 将字符串转成数字(String->int)
    8. public static String toString(int i)
    9. public static Integer valueOf(int i)
    10. public static Integer valueOf(String s)
    11. */
    12. public class IntegerDemo1 {
    13. public static void main(String[] args) {
    14. Integer i = 50; //自动装箱
    15. System.out.println(i.toString()); //50 重写了toString()
    16. System.out.println(i.intValue()); //50 手动获取被包装的数值
    17. //public static int parseInt(String s) 将字符串转成数字
    18. //String->int
    19. String s1 = "100";
    20. System.out.println(Integer.parseInt(s1)); //100
    21. //public static String toString(int i)
    22. //int->String
    23. System.out.println(Integer.toString(100)); // 100 控制台输出100,其实是"100"
    24. //public static Integer valueOf(int i)
    25. //int->Integer
    26. int i1 = 20;
    27. System.out.println(Integer.valueOf(i1)); //20
    28. //public static Integer valueOf(String s)
    29. //String->Integer
    30. String s2 = "200";
    31. System.out.println(Integer.valueOf(s2)); //200
    32. //public static String toBinaryString(int i) //转二进制
    33. Integer i2 = 30;
    34. String i3 = Integer.toBinaryString(i2);
    35. System.out.println("i3:"+i3);
    36. //如何将Integer->int
    37. Integer a1 = 100;
    38. System.out.println(a1.intValue()); //100 手动获取被包装的数值
    39. //如何将Integer->String
    40. Integer a2 = 90;
    41. System.out.println(a2.toString()+1); //901
    42. }
    43. }
     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)               转小写

    1. package com.shujia.day11;
    2. /*
    3. char - Character
    4. public static boolean isUpperCase(char ch)
    5. public static boolean isLowerCase(char ch)
    6. public static boolean isDigit(char ch)
    7. public static char toUpperCase(char ch)
    8. public static char toLowerCase(char ch)
    9. */
    10. public class CharacterDemo1 {
    11. public static void main(String[] args) {
    12. // public static boolean isUpperCase(char ch) 判断一个字符是否是大写
    13. Character c1 = 's';
    14. System.out.println(Character.isUpperCase(c1)); //false
    15. //public static boolean isLowerCase(char ch) 判断一个字符是否是小写
    16. System.out.println(Character.isLowerCase(c1)); //true
    17. //public static boolean isDigit(char ch) 判断一个字符是否是数字
    18. System.out.println(Character.isDigit(c1)); //false
    19. //public static char toUpperCase(char ch) 转大写
    20. System.out.println(Character.toUpperCase(c1)); //S
    21. //public static char toLowerCase(char ch) 转小写
    22. Character c2 = 'A';
    23. System.out.println(Character.toUpperCase(c2)); //A
    24. }
    25. }

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

    成员方法:

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

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

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

    演示:

    1. /*
    2. System类:和系统操作相关的工具类
    3. public static void gc()
    4. public static void exit(int status) 强制退出程序
    5. public static long currentTimeMillis() 获取时间戳 重要!!!
    6. */
    7. public class SystemDemo {
    8. public static void main(String[] args) {
    9. // for (int i = 0; i < 10; i++) {
    10. // if(i==5){
    11. break;
    12. // System.exit(0); //
    13. // }
    14. // System.out.println(i);
    15. // }
    16. //
    17. // System.out.println("hello world"); //不打印该语句的原因是程序已退出
    18. System.out.println(System.currentTimeMillis()); //1709562014625
    19. }
    20. }

     五.Random类成员方法

    public int nextInt()

    public int nextInt(int n)

    演示:

    1. import java.util.Random;
    2. public class RandomDemo {
    3. public static void main(String[] args) {
    4. Random random = new Random();
    5. // int i = random.nextInt(); //-1055188392 随机生成一个数
    6. // System.out.println(i);
    7. // public int nextInt(int bound) //随机产生一个整数,范围在 [0,bound)
    8. System.out.println(random.nextInt(100)+1);
    9. }
    10. }

    六.Date类概述及其方法

    1.Date类概述

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

    2.构造方法

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

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

    3.成员方法

    public long getTime()

    public void setTime(long time)

     演示:

    1. import java.util.Date;
    2. /*
    3. Date类:和日期有关的类
    4. SimpleDateFormat类:和日期格式化有关的类
    5. 构造方法:
    6. public Date() 将程序运行到此行时,此刻的时间
    7. public Date(long date) 将指定的时间戳转成对应的时间
    8. 成员方法
    9. public long getTime()
    10. public void setTime(long time)
    11. */
    12. public class DateDemo {
    13. public static void main(String[] args) {
    14. Date date = new Date();
    15. System.out.println(date); //Mon Mar 04 22:34:03 CST 2024
    16. long l = System.currentTimeMillis();
    17. System.out.println(l); //1709562843667
    18. System.out.println(new Date(l)); //Mon Mar 04 22:34:03 CST 2024
    19. }
    20. }

     七、DateFormat类概述及其方法

    1、DateFormat类概述

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

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

    2、构造方法

    public SimpleDateFormat()

    public SimpleDateFormat(String pattern)        

    3、成员方法

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

    public Date parse(String source)

    演示:

    1. import java.text.SimpleDateFormat;
    2. import java.util.Date;
    3. /*
    4. 日期格式化类:SimpleDateFormat
    5. 构造方法:
    6. public SimpleDateFormat(String pattern) yyyy年MM月dd日 HH时mm分ss秒
    7. */
    8. public class SimpleDateFormatDemo {
    9. public static void main(String[] args) {
    10. // Date date = new Date();
    11. // System.out.println(date); //Mon Mar 04 22:46:26 CST 2024
    12. //
    13. // SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    14. // String format = sdf.format(date);
    15. // System.out.println(format); //2024年03月04日 22时46分26秒
    16. /*
    17. 需求:将一个时间戳转成指定日期格式 1709535166924
    18. 时间戳--Date--格式化
    19. */
    20. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    21. Date date1 = new Date(1709535166924L);
    22. System.out.println(date1); //Mon Mar 04 14:52:46 CST 2024
    23. String format = sdf.format(date1);
    24. System.out.println(format); //2024年03月04日 14时52分46秒
    25. }
    26. }
  • 相关阅读:
    PyCharm 无法登陆 Codeium 的解决方法
    还在直接用localStorage么?全网最细:本地存储二次封装(含加密、解密、过期处理)
    [附源码]JAVA毕业设计个人信息管理系统(系统+LW)
    第八章-项目质量管理
    直播 | 数据仓库?数据湖?停止纠结,流批融合的极速 Lakehouse来了!
    【智能优化算法】基于蝙蝠优化算法求解多目标优化问题附matlab代码
    2024年java面试--mysql(3)
    numpy函数查询手册
    一站式DevOps真的能提速增效吗?TVP吐槽大会邀您来验证
    中国大陆IP段(含港澳)【2024-04-25】APNIC lasted 2024-04-25
  • 原文地址:https://blog.csdn.net/weixin_52134189/article/details/136460053