Java笔记之字符串(一)
我对String的理解
Java中字符串是使用String来实现的,String位于java.lang(这个包默认导入,因此我们不需手动导入就能使用String)。
首先我们需要记住Java中的String是一个类,也就是说字符串是对象(不能把它当成数组
)。
String构造方法
常见的构造方法有:
String() 构造空串
String(char[] value) 使用字符数组构造字符串
String(String original) 使用字符串构造字符串
使用构造方法与我们平时使用的方式比较:(平时使用的方式类似Stringa =“abc”这种)
StringTest.java
public class StringTest
{
public static void main(String[] args)
{
// 1. String()
String a0 = new String();
String a1 = "";
System.out.println("a0 equals a1 ?" + a0.equals(a1));
// 2. String(char[] value)
char[] chars = { 'H', 'e', 'l', 'l', 'o' };
String b0 = new String(chars);
String b1 = "Hello";
System.out.println("b0 equals b1 ?" + b0.equals(b1));
// 3. String(String original)
String c0 = new String("World");
String c1 = "World";
System.out.println("c0 euqals c1 ?" + c0.equals(c1));
}
}
结果:
这里说明一下,equals方法是”返回两个字符串内容是否相同”。由结果看见,这里的对比是等价的。
String的不可变性
如果一个对象,在它创建完成之后,不可以改变它的话,那么这对象就有不可变的特性。
Java初学者会认为,明明String可以变。其实这只是看起来能变而已。
例子1:
String a = “123”;
a = “abc”;
让我们来看看这段代码做了些什么
,
第一句,创建了字符串”123”,并让a指向字符串”123”;
第二句,创建了字符串”abc”,并让a重新指向”abc”,而”123”没有被指向,会当作垃圾被回收。
例子2:
String a = “abc”;
a = a + “123”;
第一句,创建了字符串”abc”,并让a指向字符串”abc”;
第二句,创建了一个新字符串,其内容为”abc”+”123”,即”abc123”,并让a指向字符串”abc123”,而”abc”当作垃圾被回收。
所以,在这两个例子中,字符串”123”仍然是”123”,同样”abc”亦是”abc”,直到被回收其值一直没有变化
。
用substirng方法分解字符串
substring方法会返回一个按照位置划分的子串。对于这个方法和它的重载就不多啰嗦了
,直接看下面的代码:
SubStringTest.java
public class SubStringTest
{
public static void main(String[] args)
{
String a = "Java 2C05C";
System.out.println(a);
String b = a.substring(2);
System.out.println(b); // 获取2到最尾的子串
String c = a.substring(3, 7);
System.out.println(c); // 获取3到6的子串
String d = a.substring(2, a.length());
System.out.println(d); // 获取2到最尾的子串
}
}
结果:
这里注意一下,Java中的位置引索通常都是左闭右开的。像substring(2,4)就是获取第2~3字符组成的串( 用数学的话,[2,4) 大于等于2且小于4 )。
今天的Java冷知识
大家会只用javac、java来编译和运行包中的类吗?我这样一问,发现身边好多小伙伴都不会。
那么今天我就来说一说吧。
首先写一个java程序,我用helloworld来举例:
C:\Java\hello\HelloWorld.java
package hello;
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}
这个类位于hello包中,那么久需要把java文件放在hello文件夹中。
之后,我们就可以编译和运行了,先打开cmd并进入到C:\Java路径中
也就是说需要打的命令:
javac 包名\类名.java
java 包名.类名