Java学习笔记----String类基本概念

String类的两种实例化方式

例.为String类对象直接赋值

public class StringDemo {
    public static void main(String args[]){
        String str = "www.Baidu.com";
        System.out.println(str);
    }
}
www.Baidu.com

以上代码没有使用关键字new,而String类本身就定义了一个构造方法,语法如下:

public String(String str)

例.利用构造方法实例化

public class StringDemo {
    public static void main(String args[]){
        String str = new String("www.Baidu.com");
        System.out.println(str);
    }
}
www.Baidu.com

字符串的比较1

例.判断两个int型整数是否相等

public class StringDemo {
    public static void main(String args[]){
        int x = 10;
        int y = 10;
        System.out.println(x==y);
    }
}
true

本程序直接定义了两个int型变量,在Java中,“==”可以应用在所有数据类型中(包括基本数据类型和引用数据类型)

例.在String对象上使用“==”比较

public class StringDemo {
    public static void main(String args[]){
        String stra = "hello";
        String strb = new String("hello");
        String strc = strb;
        System.out.println(stra==strb);
        System.out.println(stra==strc);
        System.out.println(strb==strc);
    }
}
false
false
true

上述分析中,stra和strb虽然包含的内容完全一样,但是其所在的内存地址空间不同,而在使用“==”比较时,比较的只是数值,因此“==”不能实现准确的字符串比较

例.实现字符串内容比较

public class StringDemo {
    public static void main(String args[]){
        String stra = "hello";
        String strb = new String("hello");
        String strc = strb;
        System.out.println(stra.equals(strb));
        System.out.println(stra.equals(strc));
        System.out.println(strb.equals(strc));
    }
}
true
true
true

本例中,使用equals()方法进行内容的比较,其具体的语法为:

A.equals(B)---------判断A和B内容是否相等

注:

  • “==”:是java提供的关系运算符,主要功能是进行数值相等判断,如果用在String对象上表示的是内存地址数值的比较;
  • “equals()”:由String提供的一个方法,此方法专门负责进行字符串内容的比较

两种实例化的区别

1.直接赋值实例化String类对象

直接赋值就是将一个字符串的匿名对象设置了一个名字。其语法如下:

String 变量 = 字符串常量(匿名对象)

String str = "hello";

2.构造方法实例化String类对象

String str = new String("hello");

由于每一个字符串都是一个String类的匿名对象,所以首先会在堆内存中开辟一块空间保存字符串“hello”,之后使用关键字new,开辟另一块堆内存空间。因此真正使用的是用关键字new开辟的堆内存,一开始的空间将成为垃圾。

例.不自动保存对象池操作

public class StringDemo {
    public static void main(String args[]){
        String stra = "hello";
        String strb = new String("hello");
        System.out.println(stra==strb);
    }
}
false

如果希望开辟的新内存数据也可以进行对象池的保存,那么可以采用String类定义的一个手工入池的操作,其语法如下:

public String intern();

例.手工入池

public class StringDemo {
    public static void main(String args[]){
        String stra = "hello";
        String strb = new String("hello").intern();
        System.out.println(stra==strb);
    }
}
true

总结:在所有的开发中,String对象的实例化永远都采用直接赋值的方式完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值