Java String的使用问题总结

1 == 运算符

用来判断两个对象的引用地址是否相等

2 equals方法

用来判断两个对象的值(内容)是否相等

3 String在使用匿名对象字符串或初始化赋值字符串引用变量时会采用对象池策略,相同内容的字符串,会共用同一段堆内存

4 String在new实例化方式创建字符串对象时会开辟不同的堆内存存储字符串内容,即便是相同的内容。

5 字符串的内容平不可改变,即便是对一个字符串变量赋予新的内容,但是与此同时也智慧开辟新的堆内存空间来存储,并不会改变原来的堆内存空间的内容。而短时间内JVM还来不及回收前面所创造的垃圾内存空间,这可能会造成不好的影响。

下面的例子是对以上的内容的:

StringDemo.java

package test.string;

public class StringDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		boolean b11 = false;
		boolean b12 = false;
		boolean b21 = false;
		boolean b22 = false;
		boolean b31 = false;
		boolean b32 = false;
		boolean b41 = false;
		boolean b42 = false;

    if ("hello"=="hello"){
      b11 = true;
    }
    if("hello".equals("hello")){
    	b12 = true;
    }
    System.out.println(b11);//true
    System.out.println(b12);//true
    //===================================
    String str1 = "Hello";
    String str2 = "Hello";
    if(str1 == str2){
    	b21 = true;
    }
    if(str1.equals(str2)){
    	b22 = true;
    }
    System.out.println(b21);//true
    System.out.println(b22);//true
    //==================================
    String str3 = "Hello";
    String str4 = new String("Hello");
    String str5 = new String("Hello");
    if(str3 == str4){
    	b31 = true;
    }
    if(str3.equals(str4)){
    	b32 = true;
    }
    if(str5 == str4){
    	b41 = true;
    }
    if(str5.equals(str4)){
    	b42 = true;
    }
    System.out.println(b31);//false
    System.out.println(b32);//true
    System.out.println(b41);//false
    System.out.println(b42);//true
    //==================================
    String str = "hello ";
    str = str + "world";
    System.out.println(str);//hello world, generate two heap memories
	}
}

  

时间: 2024-11-09 10:33:09

Java String的使用问题总结的相关文章

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str="Hello";  推荐这种 使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间 如图: 源代码 StringDemo01.java 2.String内容的比较 String str="Hello"

java String 两种不同的赋值 比较

原文http://blog.163.com/[email protected]/blog/static/1271436362012101214031911/ 在此感谢博主写出这么优秀的文章. 首先明确一点,String是一个类.下面我们主要讨论两个问题  a) String类的对象的两种赋值方式  b) 为什么String类的对象可以直接赋值  a) 1 类似普通对象,通过new创建字符串对象.String str = new String("Hello"); 内存图如下图所示,系统会

java string,需要进行首字母大写改写

java string,需要进行首字母大写改写,网上大家的思路基本一致,就是将首字母截取,转化成大写然后再串上后面的,类似如下代码 //首字母大写     public static String captureName(String name) {         name = name.substring(0, 1).toUpperCase() + name.substring(1);        return  name;           } 将字符串name 转化为首字母大写.但是

Java String类

JAVA String类[转] 1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”; 其实按照面向对象的标准语法,其格式应该为: String s = new String(“abc”); s = new String(“Java语言”); 只是按照面向对象的标准语法,在内存使用上存在比较大的浪费.例如String s = new String

java String 空指针异常

如下代码中,第8行和第10行均会提示Exception in thread "main" java.lang.NullPointerException. 第12行的写法可行. 1 import java.util.*; 2 import java.io.*; 3 4 public class test { 5 public static void main(String[] args) { 6 7 String a = null; 8 if (a.equals(""

java String.split()函数的用法分析

在java.lang包中有String.split()方法的原型是:public String[] split(String regex, int limit)split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,函数返回是一个数组.在其中每个出现regex的位置都要进行分解.需要注意是有以下几点:(1)regex是可选项.字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符.如果忽略该选项,返回包含整个字符串的单一元素数组.(2)limit也是可选项.

Java String API

java.lang包: String; /*java String * String对象一旦创建其内容便不会改变 * * */ Construct: String(byte[] bytes) String(byte[] bytes, int offset, int length) String(char[] value) String(char[] value, int offset, int count) Method: String obj=new String(); obj.length(

java基础知识回顾之---java String final类普通方法

辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      *      * 1,获取:     * 1.1 获取字符串中字符的个数(长度).     *         int length();     * 1.2 取字符串中的某一个字符,其中的参数index指的是字符串中序数.字符串的序数从0开始到length()-1 .     *       

java String和Date转换

SimpleDateFormat函数语法:    G 年代标志符  y 年  M 月  d 日  h 时 在上午或下午 (1~12)  H 时 在一天中 (0~23)  m 分  s 秒  S 毫秒  E 星期  D 一年中的第几天  F 一月中第几个星期几  w 一年中第几个星期  W 一月中第几个星期  a 上午 / 下午 标记符   k 时 在一天中 (1~24)  K 时 在上午或下午 (0~11)  z 时区 */ DateFormat format1 = new SimpleDate