Java编程基础解析:面向过程与面向对象、字符串的特性和常量池

一、面向过程和面向对象

面向过程:强调的是过程,也就是完成功能的每一个步骤都需要自己来实现!
面向对象:强调的是对象,由对象帮助我们完成具体的功能!

举例:吃烤鸭
  面向过程:买一只小鸭子--买一些饲料--开始养--养大了--杀死--拔毛--煮熟--烤--开吃。
  面向对象:去全聚德买一份烤鸭--开吃。

二、String

Java中的String不属于基本数据类型。它是Java中的一种引用数据类型,通常被视为字符串类型。

2.1 如何比较两个字符串是否一致

==方法:不可以用==来比较两个字符串是否相等。

在Java中,“==” 运算符用于比较两个对象的引用是否相同,即判断它们是否指向同一个内存地址。当使用“==” 运算符比较字符串时,它实际上比较的是字符串对象的内存地址,而不是字符串的内容。

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
 
System.out.println(str1 == str2); // 输出 true,因为它们指向相同的内存地址
System.out.println(str1 == str3); // 输出 false,因为str3是一个新的对象

equals 方法equals 方法用于比较两个对象的内容是否相等,对于字符串来说,它比较的是字符串的内容是否相同。

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
 
System.out.println(str1.equals(str2)); // 输出 true,因为它们的内容相同
System.out.println(str1.equals(str3)); // 输出 true,因为它们的内容相同

2.2 String值能否被修改

在Java中,String 对象是不可变的,一旦创建,其内容就不能被修改。这是因为 String 类的 final 修饰符确保了 String 类不能被继承,从而避免了可能的修改行为。

尽管 String 对象本身是不可变的,但你可以改变对 String 引用的指向。

String s = "Hello";
s = "World"; // s 现在引用了一个新的 String 对象 "World"

在这个例子中,原来的 String 对象 "Hello" 并没有被修改成别的内容,而是 s 引用从指向 "Hello" 转变为指向了新创建的 "World" 对象。

总结:虽然不能修改 String 对象的内容,但是可以改变引用的指向。

2.3 字符串常量池

在Java中,字符串常量池是存储字符串字面量的内存区域。当你创建一个字符串时,JVM会首先检查字符串常量池。如果字符串已经存在池中,它将返回对现有字符串的引用,而不是创建一个新的副本。这是一项优化,目的是提高性能和减少内存使用。

String s1="a";
String s2=new String("a");

s1会首先检查字符串常量池。如果字符串已经存在池中,它将返回对现有字符串的引用,而不是创建一个新的副本。

s2会直接创建一个字符串,并指向它。

String s1 = "aa";
String s2 = "bb";
String s3 = s1 + s2;//new String("aba"+"ac");
String s4 = "aabb";
String s5 = "aa" + "bb";
        
System.out.println(s3 == s4);// 输出 false
System.out.println(s4 == s5);// 输出 true

s1在常量池创建字符串"aa",并指向它。

s2在常量池创建字符串"bb",并指向它。

s3是new出一个对象,存储在堆中,并指向它。

s4在常量池创建字符串"aabb",并指向它。

s5会先拼接”aa"和“bb”,然后赋值给s5,那么s5将直接指向常量池中的"aabb",即跟s4指向地址相同。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值