字符串比较
- public boolean equals(String str)方法比较字符串
/**
==进行的是数值比较,如果是用于对象比较,则比较的是两个内存的地址数值
equals()是类所提供的一个比较方法,可以直接进行字符串内容的判断
*/
public class StringDemo {
public static void main(String args []) {
String strA = "www.baidu.com";
String strB = new String("www.baidu.com");
String strC = "www.baidu.com";
System.out.println(strA == strB); //false
System.out.println(strA.equals(strB)); //true
System.out.println(strA == strC); //true
}
}
字符串常量
- 字符串常量是String类的匿名对象;
String类对象两种实例化方式
- 直接赋值的对象实例化模式
public class StringDemo {
public static void main(String args []) {
String strA = "mldn";
String strB = "mldn";
}
}

- 构造方法实例化
- 构造方法实例化对象是属于自己专用的内存空间,也可以手动入池,方法名为public String intern()
public class StringDemo {
public static void main(String args []) {
String strA = new String("mldn");
}
}

public class StringDemo {
public static void main(String args []) {
String strA = "mldn";
String strB = new String("mldn");
}
}

public class StringDemo {
public static void main(String args []) {
String strA = "mldn";
String strB = new String("mldn").intern();
System.out.println(strA == strB); //true
}
}
String对象(常量)池
- 对象(常量)池主要目的是实现数据的共享处理
- 对象(常量)池主要分为两种:
- 静态常量池:指的是程序(*.class)在加载的时候会自动将此程序之中保存的字符串、普通的常量、类和方法的信息等等,全部进行分配;
- 运行时常量池:当一个程序(*.class)加载之后,里面可能有一些变量,这个时候提供的一个常量池;
/*
本程序中所给出的内容全部是常量数据(字符串的常量都是匿名对象)
所以程序在加载的时候会自动帮助开发者处理好相应的连接
*/
public class StringDemo {
public static void main(String args []) {
String strA = "www.mldn.cn";
String strB = "www." + "mldn" + ".cn";
System.out.println(strA == strB); //true
}
}

/*
程序在加载时并不确定info是什么内容,因为程序在字符串连接的时候info是一个变量
变量的内容是可以修改的,所以它不认为strB的结果是一个所需要的最终结果
此时strB存在了运行时常量池
*/
public class StringDemo {
public static void main(String args []) {
String info = "mldn";
String strA = "www.mldn.cn";
String strB = "www." + info + ".cn";
System.out.println(strA == strB); //false
}
}
字符串修改
- 字符串内容不可修改
-
在String类中包含的是一个数组,数组最大的缺点是长度不可改变,当我们设置了一个字符串之后,会自动的进行一个数组空间的开辟,开辟的内容长度是固定的
此图来源于李兴华老师
/**
在整个处理过程中,字符串常量的内容没有发生的改变,改变的只是一个String类对象的引用
这种改变将有可能带来大量的垃圾空间
*/
public class StringDemo {
public static void main(String args []) {
String str = "www.";
str += "mldn.";
str = str + "cn";
System.out.println(str);
}
}

Java中的主方法
- 主方法public static void main(String args [])
- public:描述的是一种访问权限,主方法是一切的开始点,开始点一定是公共的;
- static:程序的执行是通过类名称完成的,所以表示此方法由类直接调用
- void:主方法是一切的起点,起点一旦开始就没有返回的可能
- main:是一个系统定义好的方法名称
- String args []:字符串的数组,可以实现程序启动参数的接受
/**
运行时参数
*/
public class StringDemo {
public static void main(String args []) {
for(String arg : args) {
System.out.println(arg);
}
}
}
网友评论