`
scnu_lts
  • 浏览: 19503 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于java中String的一些思考总结

阅读更多
1.String a = "abc";//在字符串池(在栈中)里创建一个常量字符串"abc"的对象,把在栈中的地址赋给引用a,a保存的是对象的栈中地址;
2.String a1 = new String("abc");// 两个操作:1).在字符串池中看是否有值为"abc"的对象,无则在池中创建一个对象,有则返回该地址,2). 在堆中创建一个对象
3.String a2 = "abc"+"def";//如果池中有"abc"和"def"及连接后的"abcdef"则返回"abcdef"对象在字符串池(栈中)的地址,没有则在池中创建,哪个对象没有则在池中创建该对象;
4.String a3 = "abc" + a;//如果+号左右两边有变量则在堆中创建一个对象,它的值是两个字串连接后的字符串,返回的是该对象在堆中的位置;
5."=="比较的是引用(内存地址)绝对同一个对象,可以是不同的引用;"equal"比较的是它们的值;

6.下列输出值
Java代码
String hello = "hello";   
String hel = "hel";   
String lo = "lo";
final String lo1 = "lo";    
System.out.println(hello == "hel" + "lo");   // true,hello是String字符池中常量对象"hello"的地址,"hel" + "lo"返回的是字符池中"hello"的地址(若"hello"在字符池中存在返回字符池中的地址,没有则在字符串中创建一个常量对象再返回),
System.out.println(hello == "hel" + lo);  false// hello是字符池中的对象引用(栈中),"hel" + lo返回堆中新对象的地址,值为该字符串拼接后的值,只要出现+号和变量都会在堆中创建新对象;
System.out.println(hello == "hel" + lo1);  true// 变量前加了final,jvm会自动在String的字符池中找这个对象,有则返回该字符串在池中的地址
7.关于java函数中参数传值的问题:(值传递)
结论:
1).对于基本类型变量,包括char、byte、short、int、long、float、double、boolean
   在栈中对基本类型变量做了一份拷贝,函数只是操作栈中的拷贝,并不会改变原有变量的值。

2).对于引用类型,包括类、接口、数组(基本类型数组和对象数组)。
   在栈中对引用也做了一份拷贝,指向同一个堆中的地址,方法体内对参数所指向对象的属 性进行运算,会改变原有变量所指向对象的属性值,因为大家同指向一个对象的地址,操作同一个对象。

0
0
分享到:
评论

相关推荐

    java 编程入门思考

    引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...1.11 Java和因特网 ...1.13 Java还是C++?...附录E 关于垃圾收集的一些话 附录F 推荐读物

    关于Java栈与堆的思考

    关于Java栈与堆的深入解析 Java作为一种广泛使用的编程语言,其内存管理机制是学习者必须掌握的核心概念之一。在Java中,栈(Stack)与堆(Heap)是用于存储数据的主要区域,它们各自承担着不同的职责,对于理解...

    java经典面试题汇总(精华版).pdf

    根据提供的文件信息,以下是从标题、...通过以上分析,我们可以看到面向对象的思想如何应用于 Java 编程中,以及 Java 中的一些基本概念和技术点。这些知识点不仅适用于面试准备,也是日常开发中必不可少的基础知识。

    【大厂面试题总结】JavaSE面试题总结详细教程

    【大厂面试题总结】JavaSE面试题总结详细教程: 目录: 递归算法之输出某个目录下所有文件和子目录列表 ...Java基础思考之数据传递 JAVA内存泄漏详解 java序列化方式 java中实现多态的机制 string常量池和intern韩雅茹

    java各知识点详细总结.doc

    此外,Java语法还包括数据类型(如基本类型`int`、`float`,引用类型`String`、`Object`等)、运算符(算术、比较、逻辑等)、控制结构(if语句、for循环、while循环、switch语句)、类、对象、接口、包等概念。...

    java代码重构经验总结

    ### Java代码重构经验总结 在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、...

    求字符串中的第一个数字

    根据给定的信息,我们可以分析并总结出以下与“求字符串中的第一个数字”相关的知识点: ### 1. 字符串操作基础 #### 1.1 字符串简介 在 Java 中,`String` 类用于表示不可变的字符序列,即字符串。字符串在 Java ...

    java开发实习周记12篇.doc

    java开发实习周记12篇是关于java开发实习的周记文章,共有12篇文章,从实习第一周到实习第十二周,每篇文章都记录了实习生的实习经历和java开发知识点。下面是每篇文章的知识点总结: 实习第一周 了解公司背景、...

    【大厂面试题总结】JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释

    【大厂面试题总结】JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释 。 JavaSE面试题总结详细...Java基础思考之数据传递 JAVA内存泄漏详解 java序列化方式 java中实现多态的机制 string常量池和intern

    Java学习笔记详细总结

    ### Java学习笔记详细总结 #### 一、面向对象编程基础 **面向对象编程**是一种软件设计模式,它强调使用对象来构建程序。相比于面向过程编程,面向对象编程更加强调对象的概念及其行为。 ##### 1.1 面向对象与...

    java实习周记.docx

    在第二周实习中,作者主要学习了java的基础语法,包括类之间的关系、基本数据类型、常用逻辑语句和循环语句、修饰符、Static关键字、Final关键字、This关键字、string和stringBuffer等。作者总结了学习的要点,包括...

    Java学习路线总结,搬砖工逆袭Java架构师(全网最强)(csdn)————程序.pdf

    Java学习之路对于程序员的成长至...在学习过程中,不断实践、思考和分享,才能真正实现从"搬砖工"到Java架构师的蜕变。记得在学习的道路上,持续学习和提升是关键,保持热情,坚持下去,你就能在Java的世界里大放异彩。

    java顶岗实习周记(15页)详细心得参考

    在第二周实习中,作者主要学习了java的基础语法,包括类之间的关系、基本数据类型、逻辑语句和循环语句、修饰符、 Static关键字、Final关键字、This关键字、string和stringBuffer等。这些知识点都是java开发者的基础...

    中南大学Java实验报告三

    总结,中南大学的这个Java实验报告三涵盖了Java编程的关键要素,通过编写和调试代码,学生将能更好地理解和应用Java语言,为进一步的学习和项目开发打下坚实基础。通过这样的实验,不仅可以提升编程能力,也能培养...

    Java经典入门+笔记

    综合这份资源,学习者可以系统地掌握Java编程基础,并通过笔记了解作者在学习过程中的思考和经验,从而更有效地学习和理解Java这门语言。同时,通过笔记中的实践案例,可以加深对理论知识的理解,提升编程能力。

    如何用java保存网页

    - **文件操作API**:Java标准库中的`java.io`包提供了丰富的文件操作接口。 #### 三、示例代码详解 下面是一个简单的Java程序,用于演示如何保存网页到本地: ```java import org.jsoup.Jsoup; import org.jsoup....

    java实习周记25篇借鉴.pdf

    在Java语言学习过程中,作者也总结了许多有用的经验和体会,例如多看、多问、多观察和多思考等。这些经验和体会对Java语言学习和实习过程中的重要性不言而喻。 本文档是Java实习周记的总结,涵盖了Java语言的基础...

    java调用Windows应用程序

    在Java编程中,有时我们需要让Java程序去调用操作系统中的其他应用程序,例如打开记事本(Notepad)、启动计算器(Calculator)等。这种方式不仅可以增强Java程序的功能性,还能实现与本地资源更紧密的交互。本文将...

    北交大java习题(卡内基版)

    6. **字符串处理**:String类是Java中的重要组成部分,学习其方法如substring、indexOf、replace等,以及StringBuilder和StringBuffer的使用。 7. **多线程**:理解线程的基本概念,掌握Thread类和Runnable接口的...

Global site tag (gtag.js) - Google Analytics