1

1436141288

V1

2022/03/27阅读:23主题:自定义主题1

内部类①

1.参数传递

2.内部类

1-2章节暂时不补充

3 常用API

3.1 MATH

  • 1.MATH概述
    • Math类包含执行基本数字运算的方法
  • 2.Math中方法的调用性
    • Math类中无构造方法,但内部的方法都是静态的,则可以通过 类名.进行调用
    1. Math类的常用方法
方法名 说明
public static int abs(int a) 返回参数的绝对值
public static double ceil(double a) 返回大于或等于参数的最小double值,等于一个整数
public static double floor(double a) 返回小于或等于参数的最大double值,等于一个整数
public static int round(float a) 按照四舍五入返回最接近参数的int
public static int max(int a,int b) 返回两个int值中的较大值
public static int min(int a,int b) 返回两个int值中的较小值
public static double pow (double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值,[0.0,1.0]

3.2 System(应用)

  • System类的常用方法
方法名 说明
public static void exit(int status) 终止当前运行的 Java 虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)

3.3 Object类

3.3.1 equals

  • equals方法的作用
    • 用于对象之间的比较,返回true和false的结果
    • 举例:s1.equals(s2); s1和s2是两个对象
  • 重写equals方法的场景
    • 不希望比较对象的地址值,想要结合对象属性进行比较的时候。
  • 重写equals方法的方式
      1. alt + insert 选择equals() and hashCode(),IntelliJ Default,一路next,finish即可
      1. 在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上。

3.3.2 toString

  • toString方法的作用:

    • 以良好的格式,更方便的展示对象中的属性值
  • 示例(省略了getter and seeter 以及构造方法等不重要的因素)

    • private String name;
      private int age;
      @Override
      public String toString() {
          return "Student{" +
                  "name='" + name + '\'' +
                  ", age=" + age +
                  '}';
      }
      public static void main(String[] args) {
          Student s = new Student();
          s.setName("林青霞"
          s.setAge(30
          System.out.println(s); 
          System.out.println(s.toString()); 
      }
  • 结果:

    Student{name='林青霞', age=30}
    Student{name='林青霞', age=30}

4 String & StringBuffer & StringBuilder

4.1 String

String s1 = new String(); //创建String对象,字符串中没有内容
 
byte[] bys = new byte[]{97,98,99,100};
String s2 = new String(bys); // 创建String对象,把组元素作为字符串的内容
String s3 = new String(bys, 13); //创建String象,把一部分数组元素作为字符串的内容,参数offset为数组素的起始索引位置,参数length为要几个元素

char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
String s4 = new String(chs); //创建String对象,把数元素作为字符串的内容
String s5 = new String(chs, 03);//创建String对象把一部分数组元素作为字符串的内容,参数offset为数组元素起始索引位置,参数count为要几个元素

String s6 = new String(“abc”); //创建String对象,字串内容为abc

String str = "abcde";
int len = str.length();
System.out.println("len="+len);
String str = "abcde";
String s1 = str.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符
String s2 = str.substring(24);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符
System.out.println("str="+str);
System.out.println("s1="+s1);
System.out.println("s2="+s2);

更多的方法请大家跳转至JDK11官方文档查看嗷

4.2 StringBuffer

查阅StringBuffer的API,StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

  • 示例
    创建一个字符串缓冲区对象。用于存储数据。
    StringBuffer sb = new StringBuffer();
    sb.append("haha"); //添加字符串
    sb.insert(2"it");//在指定位置插入
    sb.delete(14);//删除
    sb.replace(14"cast");//替换指定范围内 的内容
    String str = sb.toString();

注意:append、delete、insert、replace、reverse方法调用后,返回值都是当前对象自己,所以说,StringBuffer它可以改变字符序列的长度和内容。

4.3 对象的方法链式调用

在我们开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。这种时候,我们就可以把代码现在一起,如append方法一样,代码如下:

创建一个字符串缓冲区对象。用于存储数据。
StringBuffer sb = new StringBuffer();
添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。
String str = sb.append(true).append("hehe").toString();

4.4 StringBuilder

查看API文档,StringBuilder作为一个可变的字符序列,提供与StringBuffer兼容的API,但不保证同步。 此类设计用作StringBuffer替代品,用于单个线程使用字符串缓冲区的位置(通常情况下)。

4.5 三者区别

StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样 ※String: 不可变字符序列

※StringBuffer: 可变字符序列、效率低、线程安全

※StringBuilder(JDK1.5): 可变字符序列、 效率高、线程不安全

※String 使用陷阱:

string s="a"//创建了一个字符串
s=s+"b";//实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")

如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能

分类:

后端

标签:

后端

作者介绍

1
1436141288
V1