• JAVA总结--java数据类型


    一、String

    1、String定义是指向堆内存中的引用;String的赋值本身是引用对象的切换,切换前后的对象依然存在;源码为:private final char value[];

    2、对多个String对象进行+符号链接,其实是创建了一个StringBuilder对象,进行多个append,然后赋值给一个String对象。

    3、常用方法

    3.1、基于源码的 final char value[]特征:

    • int length(); // 返回String长度,亦即value[]数组长度;
    • char charAt(int index); // 返回指定位置字符;
    • int indexOf(int ch, int fromIndex); //从fromIndex位置开始,查找ch字符在字符串中首次出现的位置。
    • char[] toCharArray() ;   // 将字符串转换成一个新的字符数组

    3.2、字串相关的方法

    • int indexOf(String str, int fromIndex) ;与indexOf含义相反有lastIndexOf(..),反向索引。
    • boolean contains(String str); //实际上 contains内部实现也是调用的indexOf,然后将其结果与-1相比较。
    • boolean startsWith(String str); // 判断字符串是否以str开头
    • boolean endsWith(String str); //.....是否以str结尾
    • String replace(CharSequence target, CharSequence replacement) ;  // 替换
    • String substring(int beginIndex,  int endIndex);  //字符串截取,不传第二个参数则表示直接截取到字符串末尾
    • String[] split(String regex);  // 字符串分割

    3.3、String类重写了Object类的equlas方法,使得比较字符串内容是否相等可以直接使用equlas方法。

    3.4、常量池概念:已有对象直接引用,除非对象创建时声明创建新的

    1 String a = "abc";
    2 String b = "abc";
    3 System.out.print(a == b); //true
    4 
    5 String a = "Hello";
    6 String b = new String("Hello");
    7 System.out.println(a == b);  //false
    8 System.out.println(a.equals(b)); //true

    3.5、String是不可变字符串对象,StringBuilder和StringBuffer是可变字符串对象(其内部的字符数组长度可变),StringBuffer线程安全,StringBuilder非线程安全。

    3.6、Java中的反射机制实现不可变字符串对象变化

     1 public static void stringReflection() throws Exception {
     2 
     3     String s = "Hello World";
     4 
     5     System.out.println("s = " + s); //Hello World
     6 
     7     //获取String类中的value字段
     8     Field valueField = String.class.getDeclaredField("value");
     9 
    10     //改变value属性的访问权限
    11     valueField.setAccessible(true);
    12 
    13     char[] value = (char[]) valueField.get(s);
    14 
    15     //改变value所引用的数组中的第5个字符
    16     value[5] = '_';
    17 
    18     System.out.println("s = " + s); //Hello_World
    19 }

     二、Object类

           有12个方法:hashCode和equale函数用来判断对象是否相同,

            wait(),wait(long),wait(long,int),notify(),notifyAll()  

            toString()和getClass, 

            clone()    finalize()用于在垃圾回收

  • 相关阅读:
    The EF 6.x DbContextGenerator templates are not available for VS2010
    selenium定位tr及td,并获取其文本及属性
    selenium基本操作
    Git入门
    独热编码OneHotEncoder简介
    openCV中直方图均衡化算法的理解
    pyinstaller生成exe文件失败
    图像形态学运算
    对双边滤波的理解
    PyQt中对RadioButton分组
  • 原文地址:https://www.cnblogs.com/huasky/p/7765257.html
Copyright © 2020-2023  润新知