Math

  • Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

    与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同的结果。 这种放松允许在不需要严格再现性的情况下执行更好的实现。

    默认情况下,许多Math方法只需调用中的对应方法是StrictMath组织落实。 鼓励代码生成器使用平台特定的本机库或微处理器指令(如果可用),以提供Math方法的Math实现。 这种更高性能的实现仍然必须符合Math的Math

  • 没有构造方法,如何使用类中的成员呢?

    看类的成员是否都是静态的,如果是,通过类名就可以直接调用

  

代码的应用

  1. package MathDemo;
  2.  
  3. public class MathDemo1 {
  4. public static void main(String[] args) {
  5.  
  6. //返回参数绝对值
  7. System.out.println(Math.abs(88));
  8. System.out.println(Math.abs(-88));
  9.  
  10. System.out.println("----------------------");
  11.  
  12. //返回大于或者等于参数的最小double值,等于一个参数
  13. System.out.println(Math.ceil(12.34));
  14. System.out.println(Math.ceil(13.56));
  15. System.out.println("-------------------------");
  16.  
  17. // 返回大于或者等于参数的最小double值,等于一个参数
  18. System.out.println(Math.floor(12.34));
  19. System.out.println(Math.floor(13.56));
  20. System.out.println("------------------------");
  21.  
  22. //按照四舍五入返回最接近参数的int
  23. System.out.println(Math.round(13.56F));
  24. System.out.println(Math.round(13.56F));
  25. System.out.println("------------------------");
  26.  
  27. System.out.println(Math.max(12,134));
  28. System.out.println("-----------------------");
  29.  
  30. //返回a的b次幂
  31. System.out.println(Math.pow(2.0,3.0));
  32. System.out.println("-----------------------");
  33.  
  34. //返回为double的正值,[0.0,1.0)
  35. System.out.println(Math.random());
  36. //返回[0,100)的int随机数
  37. System.out.println((int)(Math.random()*100));
  38. }
  39. }

Object

  • Object类概述
    • 类层次结构的根类,每个class都有object作为超类。
    • 所有类都直接或者间接的继承自该类
    • 所有对象(包括数组),都实现了这个类的方法
  • 构造方法
    • public Object()
    • 回想面向对象中为什么说:
      • 子类的构造方法默认访问的是父类的无参构造方法。
  • Object类的成员方法
    • public int hashCode()

      • 返回对象哈希值,支持这种方法是为了散列表,如HashMap提供的那样。  
      • 注意:哈希值就是根据哈希算法计算出来的一个值,这个值跟地址有关系,但是不是实际的地址值,你可以简单的理解为就一种地址。
    • public final class getClass()

      • 返回此Object的运行时类。 返回的类对象是被表示类的static synchronized方法锁定的对象。
  1. public class StudentTest {
  2. public static void main(String[] args) {
  3. Student s1 = new Student();
  4. System.out.println(s1.hashCode());//1163157884
  5. Student s2 = new Student();
  6. System.out.println(s2.hashCode());//1956725890
  7.  
  8. Student s3 = s1;
  9. System.out.println(s3.hashCode());
  10.  
  11. System.out.println("*****************");
  12. Student s4 = new Student();
  13. System.out.println(s4.getClass());
  14.  
  15. Class c = s4.getClass();
  16. System.out.println(c.getName());
  17.  
  18. System.out.println("***************");
  19. //链式编程
  20. System.out.println(s4.getClass().getName());
  21.  
  22. }
  23. }
    • public String toString() 

      • 返回对象的字符串表示形式。一般来说,toString方法返回一个对象的字符串
      • Integer类提供了一个静态的方法:
        • public static String toHexString(int i)返回整数参数的字符串表示形式,作为16位中的无符号整数。
        • 但是我们只拿到这样的结果com.shujia.java.day13.Student2@4554617c,是没有任何意义的
          最终方案:类重写toString()方法

        • 总结:直接输出一个对象的名称,其实就是调用该对象的toString()方法

  1. public class StudentTest2 {
  2. public static void main(String[] args) {
  3. Student2 s = new Student2();
  4. System.out.println(s.hashCode());//1163157884
  5. System.out.println(s.getClass().getName());//com.shujia.java.day13.Student2
  6. System.out.println("**********************");
  7. System.out.println(s.toString());//com.shujia.java.day13.Student2@4554617c
  8. System.out.println("***************");
  9. //toString()方法的值等价于以下内容
  10. //s.getClass().getName()+"@"+Integer.toHexString(s.hashCode())
  11. //this.getClass().getName()+"@"+Integer.toHexString(this.hashCode())
  12.  
  13. //com.shujia.java.day13.Student2@4554617c
  14.  
  15. //com.shujia.java.day13.Student2@4554617c
  16. System.out.println(s.getClass().getName()+"@"+Integer.toHexString(s.hashCode()));
  17.  
  18. s.setName("xiaohua");
  19. s.setAge(18);
  20. System.out.println("重写后的方法:"+s.toString());
  21. }
  22. }
    • public boolean equals(Object obj)

      • 指示一些其他对象是否等于此。
        这个放啊,默认情况下,比较的是地址值,但是呢,比较地址值是没有意义的,更多情况下
        我们比较对象中成员变量的值是否一样,所以想到的是重写方法

        • (==):
          基本类型,比较的是值是否相同
          引用类型:比较的是地址值是否相同

          (equals):
          引用类型:默认情况下,比较的是地址值
          不过,根据情况重写,可以自己重写,也可以自动生成

    • protected void finalize()
      • throws Throwable当垃圾回收器确定不再有对该对象的引用时,
        垃圾回收器在对象上调用该对象。
        一个子类覆盖了处理系统资源或执行其他清理的finalize方法。
        简单来说,它就是用于垃圾回收的,但是呢,什么时候回收不确定
        1、重写该方法

    • protected Object clone()
      • throws CloneNotSupportedException创建并返回此对象的副本。
        返回的是这个实例的一个克隆。

        public interface Cloneable一个类实现Cloneable接口,
        以指示Object.clone()方法,该方法对于该类的实例进行现场复制是合法的。

  1. public class StudentTest4 {
  2. public static void main(String[] args) throws CloneNotSupportedException {
  3. Student4 s = new Student4();
  4. s.setName("xiaohua");
  5. s.setAge(18);
  6. System.out.println(s.toString());
  7.  
  8. Object c = s.clone();
  9. //向下转型
  10. Student4 sclone = (Student4)c;
  11. System.out.println(s.getName()+"-------"+s.getAge());
  12. System.out.println(sclone.getName()+"----------"+sclone.getAge());
  13.  
  14. Student4 s1 = s;
  15. System.out.println(s1.getName()+"-------"+s1.getAge());
  16.  
  17. System.out.println("***********************************");
  18. s1.setName("虎");
  19. s1.setAge(24);
  20.  
  21. System.out.println(s.getName()+"-------"+s.getAge());
  22. System.out.println(sclone.getName()+"----------"+sclone.getAge());
  23. System.out.println(s1.getName()+"-------"+s1.getAge());
  24.  
  25. }
  26. }

String

  • 字符串:简单理解,就是由多个字符组成的一串数据。同理,所以也能看成一个字符数组

  • 通过查看API,发现,
                   String类代表字符串。
                   Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
                   1、字符串字面值"abc"也可以堪称一个字符串对象
                   2、字符串是常量,一旦被赋值,就不能被改变

  • 构造方法
    • public String()
    • public String(byte[] bytes)
    • public String(byte[] bytes,int offset,int Length)
    • public String(char[] value)
    • public String(char[] value, int offset , int count)
    • public String(String original)
  • 字符串方法
    • public int length()返回此字符串的长度。
    • 长度等于字符串中的数字Unicode code units。

  

  1. package StringDemo;
  2.  
  3. public class StringDemo1 {
  4. public static void main(String[] args) {
  5. String s = new String ();
  6. System.out.println("s"+s);
  7. System.out.println("s的长度"+s.length());
  8. System.out.println("*****************************");
  9.  
  10. //将字节数组转换成字符串
  11. byte[] b = {97,99,88,56,23,32};
  12. String s1 = new String(b);
  13. System.out.println("S1"+s1);
  14. System.out.println(s1.length());
  15. System.out.println("******************************");
  16.  
  17. // //public String(byte[] bytes,int offset,int length)
  18. //将字节数组的一部分截取成字符串
  19.  
  20. String s2 = new String(b,2,3);
  21. System.out.println("s2"+s2);
  22. System.out.println(s2.length());
  23. System.out.println("*********************************");
  24.  
  25. //public String(char[] value) 将字符数组转化成字符串
  26. char[] c = {'a','b','c','d','e','我','爱','冯','提','莫'};
  27. String s3 = new String(c);
  28. System.out.println("s3"+s3);
  29. System.out.println(s3.length());
  30. System.out.println("--------------------------------");
  31.  
  32. //public String(char[] value,int offset,int count)
  33. //将字符数组的一部分转化成字符串
  34. String s4 = new String(c,3,5);
  35. System.out.println("s4"+s4);
  36. System.out.println(s4.length());
  37. System.out.println("--------------------------------");
  38.  
  39. //public String(String original)
  40. //将字符串常量转化成字符串对象
  41. String s5 = new String("abcefd");
  42. System.out.println("s5 "+s5);
  43. System.out.println(s5.length());
  44.  
  45. }
  46. }
  • String的转换功能:

    • String的转换功能:

      • byte[] getBytes()

      • char[] toCharArray()

      • static String valueOf(char[] chs)

      • static String valueOf(int i)

      • String toLowerCase()

      • String toUpperCase()

      • String concat(String str)

  1. public class StringDemo10 {
  2. public static void main(String[] args) {
  3.  
  4. String s = "BigData";
  5.  
  6. //byte[] getBytes() 将字符串转换成字节数组
  7. byte[] bytes = s.getBytes();
  8. // System.out.println(bytes);
  9. for (int i = 0; i < bytes.length; i++) {
  10. System.out.println(bytes[i]);
  11. }
  12. System.out.println("**********************");
  13.  
  14. //char[] toCharArray() 将字符串转化成字符数组
  15. char[] c = s.toCharArray();
  16. // System.out.println(c);
  17. for (int i = 0; i < c.length; i++) {
  18. System.out.println(c[i]);
  19. }
  20.  
  21. System.out.println("**********************");
  22. //static String valueOf(char[] chs) 将字符数组转化成字符串
  23. String s1 = String.valueOf(c);
  24. System.out.println(s1);
  25.  
  26. System.out.println("**********************");
  27. //static String valueOf(int i) 将int类型数据转化成字符串
  28. String s2 = String.valueOf(100);
  29. System.out.println(s2);
  30.  
  31. System.out.println("**********************");
  32. //String toLowerCase() 将字符串中的字符转成小写
  33. String s3 = s.toLowerCase();
  34. System.out.println(s3);
  35. System.out.println(s);
  36.  
  37. System.out.println("**********************");
  38. // String toUpperCase()
  39. String s4 = s.toUpperCase();
  40. System.out.println(s4);
  41.  
  42. System.out.println("**********************");
  43. //String concat(String str) 把字符串拼接
  44. String s5 = "Hello";
  45. String s6 = "World";
  46. String s7 = s5+s6;
  47. String s8 = s5.concat(s6);
  48. System.out.println("s5:"+s5); //
  49. System.out.println("s6:"+s6);
  50. System.out.println("s7:"+s7);
  51. System.out.println("s8:"+s8);
  52. }
  53. }
  1. package StringDemo;
  2. /*
  3. 把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
  4. 举例:helloWOrld ---- 结果:Helloworld
  5.  
  6. 分析:
  7. 第一种方式:
  8. 1、先获取到第一个字符
  9. 2、获取除了第一个其余的字符
  10. 3、把第一步转成大写
  11. 4、把第二部转成小写
  12. 5、把第三步和第四步拼接起来
  13. 第二种方式:
  14. 1、把字符串全部转成小写
  15. 2、取第一个字符
  16. 3、将第二步转成大写
  17.  
  18. */
  19. public class StringDemo2 {
  20. public static void main(String[] args) {
  21. //定义一个字符串
  22. String s = "helloWorld";
  23. //先获取到第一个字符
  24. String s1 = s.substring(0,1);
  25. // System.out.println(s1);
  26.  
  27. //获取除了第一个其余的字符
  28. String s2 = s.substring(1);
  29. // System.out.println(s2);
  30.  
  31. // 把第一步转成大写
  32. String start = s1.toUpperCase();
  33. // System.out.println(start);
  34.  
  35. //把第二部转成小写
  36. String other = s2.toLowerCase();
  37. // System.out.println(other);
  38.  
  39. //把第三步和第四步拼接起来
  40. String result = start.concat(other);
  41. System.out.println(result);
  42.  
  43. System.out.println("-------------链式编程改进----------------");
  44.  
  45. String concat = s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase());
  46.  
  47. System.out.println(concat);
  48. }
  49. }
  • String类的其他功能

    • 替换功能

      • String replace(char old,char new)

      • String replace(String old,String new)

    • 去除字符串两空格

      • String trim()

    • 按字典顺序比较两个字符串

      • int compareTo(String str)

      • int compareToIgnoreCase(String str)

  1. package StringDemo;
  2. /*
  3. 替换功能
  4. String replace(char old,char new)
  5. String replace(String old,String new)
  6. 去除字符串两空格
  7. String trim()
  8. 按字典顺序比较两个字符串
  9. int compareTo(String str)
  10. int compareToIgnoreCase(String str)
  11. */
  12. public class StringDemo3 {
  13. public static void main(String[] args) {
  14. String s = "helloworld";
  15. //将字符串中所有的l替换成k,返回一个新的字符串
  16. String s1 = s.replace('l','k');
  17.  
  18. //将字符串中指定的字符串替换成新的字符串,返回一个新的字符串
  19. String s2 = s.replace("owo","ww");
  20. System.out.println(s);
  21. System.out.println(s1);
  22. System.out.println(s2);
  23.  
  24. //String trim()
  25. String s3 = " hello world ";
  26. String s4 = s3.trim();
  27. System.out.println(s3);
  28. //去除头尾空格
  29. System.out.println(s4);
  30.  
  31. //按字典顺序比较两个字符串
  32. //int compareTo(String str)
  33. String s5 = "hello"; //h的ASCLL码值是104
  34. String s6 = "hello";
  35. String s7 = "abc"; //a的ASCLL码值是97
  36. String s8 = "qwe"; //q的ASCLL码值是113
  37. System.out.println(s5.compareTo(s6));// 0
  38. System.out.println(s5.compareTo(s7));// 7
  39. System.out.println(s5.compareTo(s8));// -9
  40.  
  41. }
  42. }
  1. /*
  2. 如果前面几个字符是一样的怎么办?
  3. */
  4. public class StringDemo13 {
  5. public static void main(String[] args) {
  6. String s = "hello";
  7. String s2 = "hel";
  8. System.out.println(s.compareTo(s2)); // 2 = s.length - s2.length
  9. }
  10. }
  • String类的练习
    • 把数组中的数据按照指定个格式拼接成一个字符串
        举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]

  1. package StringDemo;
  2. /*
  3. 把数组中的数据按照指定个格式拼接成一个字符串
  4. 举例:int[] arr = {1,2,3};
  5. 输出结果:[1, 2, 3]
  6.  
  7. 分析:
  8. 1、定义一个空字符串对象
  9. 2、先把字符串前面拼接一个"["
  10. 3、遍历int数组,得到每一个元素
  11. 4、判断是否读到最后一个,如果是最后一个,在尾部拼接"]"
  12. 5、输出
  13.  
  14. */
  15.  
  16. public class StringDemo4 {
  17. public static void main(String[] args) {
  18. int [] arr ={1,2,3};
  19.  
  20. //定义一个空字符串对象
  21. String s = "";
  22.  
  23. //先把字符串前面拼接一个"["
  24. s += "[";
  25.  
  26. //遍历int数组,得到每一个元素
  27. for (int i = 0; i <arr.length ; i++) {
  28. //4、判断是否读到最后一个,如果是最后一个,在尾部拼接"]"
  29. if (i == arr.length-1){
  30. s+=arr[i];
  31. s+="]";
  32. }
  33. else {
  34. s += arr[i];
  35. s += ";";
  36. }
  37.  
  38. }
  39. System.out.println(s);
  40. }
  41. }
    • 字符串反转
              举例:键盘录入”abc” 输出结果:”cba”

  1. /*
  2. 字符串反转
  3. 举例:键盘录入”abc”
  4. 输出结果:”cba”
  5.  
  6. 分析:
  7. 1、键盘录入一个字符串
  8. 2、定义一个空字符串
  9. 3、将字符串转成字符数组
  10. 4、倒着遍历字符串,得到每一个字符
  11. 5、用新的字符串拼接得到每一个字符
  12. 6、输出
  13.  
  14. */
  15. public class StringDemo5 {
  16. public static void main(String[] args) {
  17. Scanner sc = new Scanner(System.in);
  18.  
  19. System.out.print("请输入一个字符串:");
  20. String oldString = sc.next();
  21.  
  22. //定义一个空字符串
  23. String newString = "";
  24.  
  25. //将字符串转成字符数组
  26. char[] charArrays = oldString.toCharArray();
  27.  
  28. //倒着遍历字符串,得到每一个字符
  29. for (int i = charArrays.length-1; i >=0 ; i--) {
  30. //用新的字符串拼接得到每一个字符
  31. newString += charArrays[i];
  32. }
  33.  
  34. //输出
  35.  
  36. System.out.println(newString);
  37.  
  38. }
  39. }
    • 统计大串中小串出现的次数
               举例:在字符串”    woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次

  1. package StringDemo;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /*
  6. 统计大串中小串出现的次数
  7. 举例:
  8. 在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagunefdsrfdsfdsfsdfwfwrfewrefsdfsjavadaddasdasdadadasjvadoiqwopeioandbuiabubjava”
  9. 中java出现了5次
  10.  
  11. */
  12. public class StringDemo6 {
  13. public static void main(String[] args) {
  14. Scanner sc = new Scanner(System.in);
  15. //定义一个字符串
  16. //String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagunefdsrfdsfdsfsdfwfwrfewrefsdfsjavadaddasdasdadadasjvadoiqwopeioandbuiabubjava";
  17. //定义一个小串
  18. //String minString = "java";
  19.  
  20. System.out.println("请输入字符串:");
  21. String maxString = sc.next();
  22. System.out.println("请输入要查找的字符串:");
  23. String minString = sc.next();
  24.  
  25. int result = findSting(maxString,minString);
  26. System.out.println("大串中小串出现的次数为:"+result);
  27.  
  28. }
  29.  
  30. public static int findSting(String maxString , String minString){
  31. //定义一个统计变量
  32. int count = 0 ;
  33.  
  34. //在大串中找到小串第一次出现的位置
  35. int index = maxString.indexOf(minString);
  36.  
  37. if(index == -1 ){
  38. System.out.println("在大串中没有小串:"+ minString);
  39. return 0;
  40. }
  41.  
  42. while (index != -1){
  43. count++;
  44.  
  45. int startIndex = index + minString.length();
  46. maxString = maxString.substring(startIndex);
  47.  
  48. index = maxString.indexOf(minString);
  49. }
  50. return count;
  51. }
  52. }

StringBuffer类

  • StringBuffer类的概述及其构造方法

    • 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题

    • 线程安全的可变字符序列

      • 线程安全,可变的字符序列。字符串缓冲区就像一个String,但可以修改。
        在任何时间点,它包含一些特定的字符序列,
        但可以通过某些方法调用来更改序列的长度和内容

  • StringBuffer和String的区别?

    • 前者长度和内容可以发生改变、后者不可改变

    • 前者可以提前给出缓冲区,可以进行字符串拼接不会重新开辟空间
      后者会重新开辟空间,会浪费太多资源

        

  • 构造方法
    • public StringBuffer()

    • public StringBuffer(int capacity)

    • public StringBuffer(String str)

  • StringBuffer的方法:

    • public int capacity()返回当前容量。
      容量是新插入字符可用的存储量,超过此值将进行分配。

    • public int length()返回长度(字符数)

  1. package com.shujia.java.day14;
  2.  
  3. /*
  4. 1、线程安全的
  5. 2、安全,代表着有同步存在,数据是安全的,效率不高
  6. 3、不安全,不同步,效率高
  7. 4、安全问题和效率问题一直都是一个矛盾点
  8. 5、生活中,哪些案例是安全和效率
  9. 6、安全:售票、医院取号、银行的一些业务
  10. 7、效率:论坛、视频会员...
  11.  
  12. StringBuffer:
  13. 线程安全,可变的字符序列。字符串缓冲区就像一个String,但可以修改。
  14. 在任何时间点,它包含一些特定的字符序列,
  15. 但可以通过某些方法调用来更改序列的长度和内容
  16.  
  17. 简单来说:它就是一个线程安全的可变字符串
  18.  
  19. StringBuffer和String的区别?
  20. 1、前者长度和内容可以发生改变、后者不可改变
  21. 2、前者可以提前给出缓冲区,可以进行字符串拼接不会重新开辟空间
  22. 后者会重新开辟空间,会浪费太多资源
  23.  
  24. StringBuffer的构造方法:
  25. public StringBuffer()
  26. public StringBuffer(int capacity)
  27. public StringBuffer(String str)
  28.  
  29. StringBuffer的方法:
  30. public int capacity()返回当前容量。
  31. 容量是新插入字符可用的存储量,超过此值将进行分配。
  32.  
  33. public int length()返回长度(字符数)。
  34.  
  35. */
  36. public class StringBufferDemo1 {
  37. public static void main(String[] args) {
  38. //public StringBuffer() 无参构造方法
  39. StringBuffer sb = new StringBuffer();
  40. //重写了toSting()方法
  41. System.out.println("sb:"+sb);
  42. System.out.println(sb.capacity()); //16
  43. System.out.println(sb.length());
  44.  
  45. //public StringBuffer(int capacity)
  46. StringBuffer sb2 = new StringBuffer(50);
  47. System.out.println(sb2);
  48. System.out.println(sb2.capacity()); //50
  49. System.out.println(sb2.length()); //0
  50.  
  51. //public StringBuffer(String str)
  52. StringBuffer sb3 = new StringBuffer("hello");
  53. System.out.println(sb3);
  54. System.out.println(sb3.capacity()); //21 16 + 5
  55. System.out.println(sb3.length()); //5
  56.  
  57. }
  58. }
  • 添加功能

    • public StringBuffer append(String str)

    • public StringBuffer insert(int offset,String str)

  1. package StringBufferDemo;
  2. /*
  3. StringBuffer:
  4. 添加功能
  5. public StringBuffer append(String str)
  6. 可以把任意类型的数据添加到字符串缓冲区里面
  7. 并且返回的是字符串缓冲区本身
  8. public StringBuffer insert(int offset,String str)
  9. 在指定位置插入数据到字符串缓冲区里面
  10.  
  11. */
  12. public class StringBufferDemo1 {
  13. public static void main(String[] args) {
  14. StringBuffer sb = new StringBuffer();
  15.  
  16. //public StringBuffer append(String str)
  17. StringBuffer sb2 = sb.append("hello");
  18. System.out.println(sb2);
  19. System.out.println(sb);
  20. System.out.println(sb == sb2);
  21.  
  22. // sb.append(true);
  23. // sb.append(10);
  24. // sb.append(12.34);
  25. // System.out.println(sb);
  26. // System.out.println(sb2);
  27.  
  28. //链式编程
  29. sb.append(true).append(10).append(12.13).append(12313.123);
  30. System.out.println(sb);
  31.  
  32. //public StringBuffer insert(int offset,String str)
  33. //在指定索引位置上,插入某字符串
  34. sb.insert(5,"java'");
  35. System.out.println(sb);
  36.  
  37. }
  38. }
  • 删除功能

    • public StringBuffer deleteCharAt(int index)

    • public StringBuffer delete(int start,int end)

  1. package StringBufferDemo;
  2. /*
  3. 删除功能
  4. public StringBuffer deleteCharAt(int index)
  5. public StringBuffer delete(int start,int end)
  6.  
  7. */
  8. public class StringBufferDemo2 {
  9. public static void main(String[] args) {
  10. StringBuffer sb = new StringBuffer();
  11.  
  12. sb.append("hello").append("java").append("bigdata'");
  13. System.out.println(sb);
  14. System.out.println("--------------------------------------'");
  15.  
  16. //public StringBuffer deleteCharAt(int index)
  17. //删除指定位置的字符,并返回本身
  18. // sb.deleteCharAt(5);
  19. // System.out.println(sb);
  20. //
  21. // sb.deleteCharAt(0);
  22. // System.out.println(sb);
  23.  
  24. //public StringBuffer delete(int start,int end)
  25. //左闭右开
  26. sb.delete(3,5);
  27. System.out.println(sb);
  28.  
  29. System.out.println("-------------------------------------");
  30.  
  31. //删除所有字符串
  32. sb.delete(0,sb.length());
  33. System.out.println(sb);
  34.  
  35. }
  36. }
  • 替换功能

    • public StringBuffer replace(int start,int end,String str)

  1. package StringBufferDemo;
  2. /*
  3. public StringBuffer replace(int start,
  4. int end,
  5. String str)用指定的String中的字符替换此序列的子字符串中的String 。
  6. 子串开始于指定start并延伸到字符索引end - 1 ,或如果没有这样的字符存在的序列的结束。
  7. 第一子串中的字符被去除,然后指定String被插入在start 。
  8. (如果需要,此序列将被延长以容纳指定的字符串。)
  9. */
  10. public class StringBufferDemo3 {
  11. public static void main(String[] args) {
  12. StringBuffer sb = new StringBuffer();
  13.  
  14. sb.append("hello").append("java").append("bigdata");
  15. System.out.println(sb);
  16.  
  17. //public StringBuffer replace(int start,
  18. // int end,
  19. // String str)
  20.  
  21. sb.replace(5,9,"数加");
  22. System.out.println(sb);
  23.  
  24. }
  25. }
  • 反转功能

    • public StringBuffer reverse()

  1. package StringBufferDemo;
  2. /*
  3. public StringBuffer reverse()导致该字符序列被序列的相反代替。
  4. 如果序列中包含任何替代对,则将它们视为单个字符进行反向操作。
  5. */
  6.  
  7. public class StringBufferDemo4 {
  8. public static void main(String[] args) {
  9. StringBuffer sb = new StringBuffer();
  10.  
  11. sb.append("我爱你");
  12. System.out.println(sb);
  13.  
  14. sb.reverse();
  15. System.out.println(sb);
  16. }
  17.  
  18. }
  • 截取功能

    • public String substring(int start)
    • public String substring(int start,int end)

  1. /*
  2. 截取功能:注意此时的返回值类型就不再是StringBuffer类型了
  3. 返回值类型是String类型,本身没有发生改变
  4. public String substring(int start)
  5. public String substring(int start,int end)
  6.  
  7. */
  8. public class StringBufferDemo6 {
  9. public static void main(String[] args) {
  10. //创建字符串缓冲区对象
  11. StringBuffer sb = new StringBuffer();
  12.  
  13. sb.append("hello").append("world").append("bigdata");
  14. System.out.println(sb);
  15.  
  16. //截取功能
  17. //public String substring(int start)
  18. String s = sb.substring(5);
  19. System.out.println(s); //worldbigdata
  20. System.out.println(sb); //helloworldbigdata
  21.  
  22. //public String substring(int start,int end)
  23. String s2 = sb.substring(5, 10);
  24. System.out.println(s2);
  25. System.out.println(sb);
  26.  
  27. }
  28. }
  • 截取功能和前面几个功能的不同

    • 返回值类型是String类型,本身没有发生改变

  • StringBuffer类练习
    • String和StringBuffer的相互转换

  1. package StringBufferDemo;
  2.  
  3. /*
  4. String和StringBuffer的相互转换
  5.  
  6. A -- B的转换,把A转化成B,为了是使用B的功能
  7. B -- A,把B转换成A,结果可能就是需要A类型,所以还得转回来
  8.  
  9. String和StringBuffer的相互转换
  10. */
  11.  
  12. public class StringBufferDemo5 {
  13. public static void main(String[] args) {
  14. // String -- StringBuffer
  15.  
  16. String s = "hello";
  17. //注意:不能把字符串String类型赋给StringBuffer类型
  18. // StringBuffer sb = s;
  19. // StringBuffer sb = "hello";
  20.  
  21. //方式1:通过构造方法
  22. StringBuffer sb = new StringBuffer(s);
  23. System.out.println(s);
  24.  
  25. //方法2:调用StringBuffer的append方法
  26. StringBuffer stringBuffer = new StringBuffer();
  27. stringBuffer.append(s);
  28. System.out.println(stringBuffer);
  29.  
  30. //StringBuffer -- String
  31. StringBuffer sb2 = new StringBuffer("bigdata");
  32. //方式1:调用String的构造方法
  33. String s1 = new String(sb2);
  34. System.out.println(s1);
  35.  
  36. //方式2:调用StringBuffer的toString()方法
  37. String s2 =sb2.toString();
  38. System.out.println(s2);
  39. }
  40. }
    • 把数组拼接成一个字符串

  1. package StringBufferDemo;
  2. /*
  3. 把数组拼接成一个字符串
  4. */
  5. public class StringBufferDemo6 {
  6. public static void main(String[] args) {
  7. //定义一个数组
  8. int[] arr = {11,2,3,4,56,2,3,45,6};
  9.  
  10. //方式1:用String拼接
  11. String s = "";
  12.  
  13. s += "[";
  14.  
  15. for (int i = 0; i < arr.length; i++) {
  16. if(i == arr.length-1){
  17. s += arr[i];
  18. s += "]";
  19. }else {
  20. s += arr[i];
  21. s+=",";
  22. }
  23. }
  24.  
  25. System.out.println(s);
  26.  
  27. System.out.println("-----------------------------------");
  28.  
  29. //方式2:用StringBuffer拼接
  30. StringBuffer sb = new StringBuffer();
  31.  
  32. sb.append('[');
  33. for (int i = 0; i <arr.length ; i++) {
  34. if(i == arr.length-1){
  35. sb.append(arr[i]).append("]");
  36. }else {
  37. sb.append(arr[i]).append(",");
  38. }
  39.  
  40. }
  41.  
  42. System.out.println(sb);
  43. }
  44. }
    • 把字符串反转

  1. package StringBufferDemo;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /*
  6. 把字符串反转
  7. */
  8. public class StringBufferDemo7 {
  9. public static void main(String[] args) {
  10. Scanner sc = new Scanner(System.in);
  11. System.out.println("请输入数据:");
  12. String stringLine = sc.next();
  13.  
  14. //方式1:用String拼接
  15. String result = "";
  16. //将输入的字符串转化成字符数组
  17. char[] charArray = stringLine.toCharArray();
  18.  
  19. for (int i = charArray.length - 1; i>= 0 ; i--) {
  20. result += charArray[i];
  21. }
  22. System.out.println(result);
  23.  
  24. System.out.println("-------------------------------");
  25.  
  26. //方式2:利用StringBuffer的reverse()方法
  27. StringBuffer stringBuffer = new StringBuffer(stringLine);
  28. StringBuffer stringBuffer1 = stringBuffer.reverse();
  29. String s = stringBuffer1.toString();
  30. System.out.println(s);
  31.  
  32. System.out.println(new StringBuffer(stringLine).reverse().toString());
  33.  
  34. }
  35. }
    • 判断一个字符串是否是对称字符串

      • 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串

  1. package StringBufferDemo;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /*
  6. 判断一个字符串是否是对称字符串
  7. 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
  8.  
  9. 分析:
  10. 1、第一个字符和最后一个字符比较
  11. 2、第二个字符与倒数第二个字符比较
  12. ...
  13. 比较的次数:长度/2
  14. */
  15. public class StringBufferDemo8 {
  16. public static void main(String[] args) {
  17. //键盘录入
  18. Scanner sc = new Scanner(System.in);
  19. System.out.println("请输入想要判断的字符串:");
  20. String stringLine = sc.next();
  21.  
  22. //方式1:一个一个比较
  23. //将输入的字符串转化成字符数组
  24. // char[] charArray = stringLine.toCharArray();
  25. // boolean flag = true;
  26. //
  27. // for (int start = 0, end = charArray.length - 1; start <= end; start++, end--) {
  28. // if (charArray[start] != charArray[end]) {
  29. // System.out.println("该字符串不是对称字符串");
  30. // flag = false;
  31. // break;
  32. // }
  33. // }
  34. // if (flag) {
  35. // System.out.println("字符串是对称字符串");
  36. // }
  37.  
  38. //方式2:利用StringBuffer的反转方法
  39. //将String转换成StringBuffer
  40. // StringBuffer sb1 = new StringBuffer(stringLine);
  41. // StringBuffer stringBuffer = sb1.reverse();
  42. // //将反转后的StringBuffer转化成String类型
  43. // String s = stringBuffer.toString();
  44. String s = new StringBuffer(stringLine).reverse().toString();
  45.  
  46. if(s.equals(stringLine)){
  47. System.out.println("字符串是对称字符串");
  48. }else {
  49. System.out.println("该字符串不是对称字符串");
  50. }
  51.  
  52. }
  53. }
  • StringBuffer类面试题

    • 通过查看API了解一下StringBuilder类

    • String,StringBuffer,StringBuilder的区别

      • String的内容是不可变的,而StringBuffer和StringBuilder的内容是可以变的

      • StringBuffer是同步线程安全的,数据安全,效率低

      • StringBuilder是不同步的,数据不安全,效率高

    • StringBuffer和数组的区别

        1. 两个都可以看作是一个容器,装一些数据
          但是,StringBuffer最终存的数据是一个字符串数据
          而数组可以存放多种数据,但是同一个数组里面元素类型一致
    • 看程序写结果:

      • String作为参数传递

      • StringBuffer作为参数传递

  1. 3、看程序写结果:
  2. String作为参数传递
  3. StringBuffer作为参数传递
  4. */
  5. public class StringBufferDemo9 {
  6. public static void main(String[] args) {
  7. String s1 = "hello";
  8. String s2 = "world";
  9. System.out.println(s1+"---"+s2); //hello---world
  10. change(s1,s2);
  11. System.out.println(s1+"---"+s2); //hello---world
  12.  
  13. StringBuffer sb1 = new StringBuffer("hello");
  14. StringBuffer sb2 = new StringBuffer("world");
  15. System.out.println(sb1+"---"+sb2); //hello---world
  16. change2(sb1,sb2);
  17. System.out.println(sb1+"---"+sb2); //hello---worldworld
  18. }
  19.  
  20. public static void change2(StringBuffer sb1,StringBuffer sb2){
  21. sb1 = sb2;
  22. sb2.append(sb1);
  23. }
  24.  
  25. public static void change(String s1,String s2){
  26. s1 = s2;
  27. s2 = s1+s2;
  28. }
  29. }

Arrays

Arrays类的概述和常用方法

  • Arrays类用包含用于操作数组的各种方法

  1. package Arrays;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5.  
  6. public class Arraysdemo {
  7. public static void main(String[] args) {
  8. //定义一个数组
  9. int[] arr = {24,89,21,34,121};
  10. System.out.println("排序前"+ Arrays.toString(arr));
  11.  
  12. //对数组元素进行从小到大排序
  13. Arrays.sort(arr);
  14. System.out.println("排序后"+Arrays.toString(arr));
  15. }
  16. }

工具类的设计思想

  • 构造方法用private修饰
  • 成员用public修饰

Integer类的概述和使用

  • Integerl:包装一个对象中的原始类型Int的值

代码的实现

  1. package Arrays;
  2.  
  3. public class integerDemo {
  4. public static void main(String[] args) {
  5. /* //public Integer(int value),根据 int 值创建Integer 对象(过时)
  6. Integer i1 = new Integer(100);
  7. System.out.println(i1);
  8.  
  9. //public Integer(String s),根据String 值创建Integer对象(过时)
  10. Integer i2 = new Integer("100");
  11. System.out.println(i2);
  12. */
  13.  
  14. // public static Integer valueOf(int i),返回表示指定的int值的Integer实例
  15. Integer i1 = Integer.valueOf(100);
  16. System.out.println(i1);
  17.  
  18. // public static Integer valueOf(String i),返回一个保存指定值的Integer 对象 String
  19. Integer i2 = Integer.valueOf("100");
  20. System.out.println(i2);
  21. }
  22. }

Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类的更多相关文章

  1. Java高级特性 第2节 java中常用的实用类(1)

    一.Java API Java API即Java应用程序编程接口,他是运行库的集合,预先定义了一些接口和类,程序员可以直接调用:此外也特指API的说明文档,也称帮助文档. Java中常用的包: jav ...

  2. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  3. Java之常用API

    API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些 ...

  4. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  5. java中常用的工具类(三)

    继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类       ...

  6. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  7. java中常用的字符串的截取方法

    java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...

  8. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  9. 动图+源码,演示 Java 中常用数据结构执行过程及原理

    ​阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想 ...

随机推荐

  1. 微信小程序云开发-数据库-获取用户添加的数据到数据库

    一.列表页面新增[添加商品]按钮 在列表页增加[添加商品]按钮,按钮绑定事件toAdd(),用户点击该按钮跳转到添加商品页面. 在js文件中写toAdd()函数,作用是点击[添加商品]按钮,跳转到[添 ...

  2. 如何使用Scala的ClassTag

    Scala官方文档中对于ClassTag的定义如下: ClassTag[T]保存着在运行时被JVM擦除的类型T的信息.当我们在运行时想获得被实例化的Array的类型信息的时候,这个特性会比较有用. 下 ...

  3. ASM入网小助手卸载

    目录 ASM小助手卸载 写在前的 卸载 解除U盘禁用 写在后的 ASM小助手卸载 写在前的 有些公司内网的上网认证是用的ASM小助手,不过有时候用自己电脑接入公司内网可能会主动下载到ASM入网小助手的 ...

  4. Pb代理工具之mitmproxy

    mitmproxy 一 . mitmproxy介绍 mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack). 不同于 fid ...

  5. document.all("div).style.display = "none"与 等于""的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 【阿菜用工具】利用 Web3.js 在 ganache 上部署以及调用智能合约

    合约部署 要部署的合约 pragma solidity ^0.4.23; contract test { uint256 value; function setValue(uint256 _value ...

  7. solr(CVE-2019-17558)远程命令执行

    影响版本 Apache Solr 5.x到8.2.0版本 测试 https://github.com/jas502n/CVE-2019-0193

  8. LeetCode通关:求次数有妙招,位运算三连

    分门别类刷算法,坚持,进步! 刷题路线参考: https://github.com/chefyuan/algorithm-base 大家好,我是刷题困难户老三,这一节我们来刷几道很有意思的求次数问题, ...

  9. 2020年最新阿里、字节、腾讯、京东等一线大厂高频面试(Android岗)真题合集,面试轻松无压力

    本文涵盖了阿里巴巴.腾讯.字节跳动.京东.华为等大厂的Android面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行发展的标杆,很多公司的面试官同样会研 ...

  10. 对抗防御之对抗样本检测(一):Feature Squeezing

    引言 在之前的文章中,我们介绍了对抗样本和对抗攻击的方法.在该系列文章中,我们介绍一种对抗样本防御的策略--对抗样本检测,可以通过检测对抗样本来强化DNN模型.本篇文章论述其中一种方法:feature ...