JAVA 基础5-字符串

一.字符串定义

直接定义:String str1 = "abc" ;String str2 = "abc"  ;,

创建一个新字符串:String str3 = new String(); String str4 = new String();

字符串类型是一种引用类型,所定义的变量是对象,写法同面向对象。

注意:str1 == str2 返回值是true,原因为abc这个值在内存的常量池中,当再次定义时如值相同则str1和str2都指向同一个值。

   str3 == str4 返回值是false,原因为使用了new,则在内存中创建了两个空间,str3和str4分别指向不同的对象。

   String str3 = new String("abc") 相当于String str3 = "abc", 但底层运行机制不同。

   String str1 = null 和String str2 = "" 意思不一样,第一个没有任何指向,第二个指向为空。

二.字符串连接

每个字符串之间用"+"相连,与其他数据类型连接时,连接之后的返回值是字符串。

三.常用字符串操作方法

  String str = "abc"; String str2 = "abc"

  • str.equals(str2); // 比较两个字符串的值是否相等;( ==在用于非基础数据类型时是指比较两个变量指向的地址是否相同,equals 比较两个对象的值是否相等)
  • str.length();// 获取整个字符串的长度;
  • str.trim();// 去掉字符串两边的空格;
  • str.charAt(int i);// 获取某个索引值上的字符;
  • str.contains(CharSequence ab);// 是否包含某个字符串 ;CharSequence 字符序列
  • str.startsWith(String ab); // 判断是否以某个字符串开始;
  • str.endsWith(String ab); // 判断是否以某个字符串结尾;
  • str.replace(char a, char e); // 将字符串中所有的a替换成e;
  • str.replace(CharSequence ab, CharSequence aa);//  将字符串中所有的ab替换成aa;
  • str.split(String s); // 分割字符串;将字符串以s进行分割,返回值是数组;
  • str.toUpperCase(); // 将字符串转换成大写
  • str.toLowerCase(); // 转换成小写
  • str.indexOf(String ab);//取这个字符串第一次出现的索引位置
  • str.lastIndexOf(String s);//取这个字符串最后一次出现的索引位置
  • str.substring(int i);//取索引值为这个整数参数后面的字符串
  • str.substring(int i, int j);//取i和j之间的字符串(不包括j)
  • String.valueOf(any args); // 把任意参数转换成字符串;是对类的方法,属于静态方法。

四.常用字符串缓冲区操作方法(主要用来构建字符串)

返回值一般为StringBuffer 可以进行类的连贯操作,但不建议。

  StringBuffer buffer = new Stringbuffer("abc")

  • buffer.append(String 123); // 追加一个字符串;
  • buffer.insert(int 1, String 123); // 在某个索引位置插入一个字符串;输出为a123bc
  • buffer.deleteCharAt(int index);// 删除在某个索引位置的字符;
  • buffer.delete(int start, int end);//删除两个索引之间的字符;
  • buffer.replace(int start, int end, String s);//替换两个索引之间的字符;
  • buffer.setCharAt(int index, char ch);设置某个索引位置上的字符;
  • buffer.toString();把字符串缓冲转换成字符串;在打印输出时默认调用此方法;
  • buffer.reverse() // 反转字符串

注意:字符串与字符串缓冲区别在于字符串是常量,无法更改,当进行操作时其效率远低于使用字符串缓冲;

五.System类

  • System.currentTimeMillis() ;// 返回当前的系统时间(以时间戳的形式)
  • System.exit(0);//退出当前正在运行的java虚拟机, 0表示正常退出,其他都是不正常退出,一般用-1,表示整个都不运行了。
  • System.gc();//手动启动垃圾回收机制;JAVA里自动启动垃圾回收机制,超出变量作用域的对象, 会及时的被垃圾回收机制回收。不推荐手动调用此方法(降低程序运行效率),此方法会自动调用finalize方法。
  • System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);//数组的复制;分别指复制来源名,来源开始复制索引位置,复制目标名,目标开始复制索引位置,复制长度。

六.数字包装类

自动装箱:

基础数据类型不能等于null,将其进行包装便可以,每一个基础数据类型都有自己的包装类。

int 对应Integer;char 对应character;其他都是首字母大写例: long对应Long;包装后是一种对象,可以等于null。

Integer i = 2;此段代码让程序完成了对变量i的自动装箱;

自动拆箱:

  • Integer.parseInt("123");//将字符串123转换成数字123;如果字符串中有非数字字符则会报错;
  • Integer.parseInt(String s, int radix); // 将其他进制的字符串转换成int;逗号后面写被转换的进制,如写16则是将16进制的字符串转化为10进制;radix:基数;

其他进制转换:

  • Integer.toBinaryString(int i); // 将一个int值转换成二进制的字符串
  • Integer.toOctalString(int i); // 将一个int转换成八进制的字符串
  • Integer.toHexString(int i); // 将一个int转换成16进制的字符串

七.数字与字符串之间的相互转换

1.字符串转换为数字:
int i = Integer.parseInt(String)
2.数字转换为字符串:
String str = i + "";
String str = String.valueOf(i);
String str = Integer.toString(i)

原文地址:https://www.cnblogs.com/wyc1991/p/8978839.html