- 浏览: 324373 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
String 这个类非常特殊,下面是它的一些特点:
1、Sring类是final类型的,不能被继承。
2、例如:String str = "abc";//这样的语句生成的也是一个字符串对象,而这里却没有用new语句。
3、字符串String是常量,它们的对象被创建之后就是不能被改变的。
例如:
String s1 = "hello";
String s2 = " world";
String s3 = s1 + s2;
s1和s2对象生成之后就不能再被修改了,修改之后的字符串实际上都是生成了一个新的对象。s3也是生成的一个新的字符串对象,是把s1和s2里面的内容拼接到一块。
4、字符串支持使用“+”来连接多个字符串。实际上是生成了一个新的字符串对象,而不是在原有字符串的基础上追加内容。
5、java会维护着一个字符串池(String Pool,字符串池位于内存的栈中)【下面讲解String两种赋值方式的实际执行流程】:
a)、String s = “aaa”;(采用字面值方式赋值)
1) 查找String Pool中是否存在“aaa”这个对象,如果不存在,则在String Pool中创建一个“aaa”对象,然后将String Pool中的这个“aaa”对象的地址返回来,赋给引用变量s,这样s会指向String Pool中的这个“aaa”字符串对象
2) 如果存在,则不创建任何对象,直接将String Pool中的这个“aaa”对象地址返回来,赋给s引用。
b)、String s = new String(“aaa”); (采用new方式创建对象)
1) 首先在String Pool中查找有没有“aaa”这个字符串对象,如果有,则不在Strng Pool中再去创建“aaa”这个对象了,直接在堆中(heap)中创建一个“aaa”字符串对象,然后将堆中的这个“aaa”对象的地址返回来,赋给s引用,导致s指向了堆中创建的这个“aaa”字符串对象。
2) 如果没有,则首先在String Pool中创建一个“aaa“对象,然后再在堆中(heap)创建一个”aaa“对象,然后将堆中的这个”aaa“对象的地址返回来,赋给s 引用,导致s指向了堆中所创建的这个”aaa“对象。
重点:栈和堆是计算机内存的两大主要区域,java中所有new出来的对象都位于堆中。
熟悉完以上知识之后重点查看以下代码,以及打印出来的每个结果:
下面这些打印结果在找工作之前需要记忆
打印结果:true true true true false true
1、Sring类是final类型的,不能被继承。
2、例如:String str = "abc";//这样的语句生成的也是一个字符串对象,而这里却没有用new语句。
3、字符串String是常量,它们的对象被创建之后就是不能被改变的。
例如:
String s1 = "hello";
String s2 = " world";
String s3 = s1 + s2;
s1和s2对象生成之后就不能再被修改了,修改之后的字符串实际上都是生成了一个新的对象。s3也是生成的一个新的字符串对象,是把s1和s2里面的内容拼接到一块。
4、字符串支持使用“+”来连接多个字符串。实际上是生成了一个新的字符串对象,而不是在原有字符串的基础上追加内容。
5、java会维护着一个字符串池(String Pool,字符串池位于内存的栈中)【下面讲解String两种赋值方式的实际执行流程】:
a)、String s = “aaa”;(采用字面值方式赋值)
1) 查找String Pool中是否存在“aaa”这个对象,如果不存在,则在String Pool中创建一个“aaa”对象,然后将String Pool中的这个“aaa”对象的地址返回来,赋给引用变量s,这样s会指向String Pool中的这个“aaa”字符串对象
2) 如果存在,则不创建任何对象,直接将String Pool中的这个“aaa”对象地址返回来,赋给s引用。
b)、String s = new String(“aaa”); (采用new方式创建对象)
1) 首先在String Pool中查找有没有“aaa”这个字符串对象,如果有,则不在Strng Pool中再去创建“aaa”这个对象了,直接在堆中(heap)中创建一个“aaa”字符串对象,然后将堆中的这个“aaa”对象的地址返回来,赋给s引用,导致s指向了堆中创建的这个“aaa”字符串对象。
2) 如果没有,则首先在String Pool中创建一个“aaa“对象,然后再在堆中(heap)创建一个”aaa“对象,然后将堆中的这个”aaa“对象的地址返回来,赋给s 引用,导致s指向了堆中所创建的这个”aaa“对象。
重点:栈和堆是计算机内存的两大主要区域,java中所有new出来的对象都位于堆中。
熟悉完以上知识之后重点查看以下代码,以及打印出来的每个结果:
package com.spring; public class ObjectTest { public static void main(String[] args) { Object object = new Object(); Object object2= new Object(); System.out.println(object == object2);//false System.out.println("------------------------------"); System.out.println(object.equals(object2));//false【调用的是Object类内部的equals()方法】 System.out.println("-------------------------------"); String str = new String("aaa"); String str2 = new String("aaa"); System.out.println(str == str2);//false System.out.println("-------------------------------"); System.out.println(str.equals(str2));//true【调用的是String类内部的equals()方法,这个方法是从父类Object里重写过来的】 System.out.println("-------------------------------"); String str3 = "bbb"; String str4 = "bbb"; System.out.println(str3 == str4);//true System.out.println("-------------------------------"); System.out.println(str3.equals(str4));//true【调用的是String类内部的equals()方法】 System.out.println("-------------------------------"); String str5 = new String("ccc"); String str6 = "ccc"; System.out.println(str5 == str6);//false System.out.println("---------------------------------"); String s = "hello"; String s1 = "hel"; String s2 = "lo"; System.out.println(s == s1 + s2);//false System.out.println("---------------------------------"); System.out.println(s == "hel" + "lo");//true } }
下面这些打印结果在找工作之前需要记忆
package testPackage; class Test { public static void main(String[] args) { String hello = "Hello", lo = "lo"; System.out.print((hello == "Hello") + " "); System.out.print((Other.hello == hello) + " ");//other表示如果有其他类或包下面类里面也有一个字符串常量 System.out.print((other.Other.hello == hello) + " "); System.out.print((hello == ("Hel"+"lo")) + " ");//两个常量进行拼接 System.out.print((hello == ("Hel"+lo)) + " ");//一个常量和一个变量进行拼接,就会生成一个新的字符串对象 System.out.println(hello == ("Hel"+lo).intern());//不管是常量还是变量拼接,只要调用inter()方法,一定返回的是池中的引用,而hello指向的也是字符串池中的对象,因此相等 } }
打印结果:true true true true false true
发表评论
-
领域精通涉及技术点(不分先后)
2017-12-20 19:35 620Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1642我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1447String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1184今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 458讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 973emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 445BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5811、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2981http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2311有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 1017spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 709java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 522诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 512http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 476Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 407要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 490spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1082需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 880按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 489112345
相关推荐
标题:“String类方法总结” 描述:“string类方法总结,由毕姥爷精心提炼,被誉为学习String类的必读经典。” **知识点详述:** 在Java编程语言中,`String`类是一个极其重要的类,用于处理文本数据。由于其不可...
### 标准C++中的`string`类的用法总结 在C++编程语言中,`string`类是处理字符串的利器,它提供了丰富的功能,远远超过了传统的C风格字符串(即`char*`)。`string`类封装了字符串操作的所有细节,使得字符串处理变...
根据提供的信息,我们可以总结出这份Java基础String类选择题练习题主要聚焦于String及StringBuffer类的使用。尽管具体的题目内容未给出,但从所展示的信息中可以推断出该练习题集涵盖了以下几方面的知识点: ### 一...
总结起来,`std::string`是C++中处理字符串的重要工具,它提供了丰富的功能和便捷的API,使得字符串操作变得简单而高效。理解并熟练使用`std::string`,对提升编程能力大有裨益。在学习和实践中,我们应该不断探索其...
标题中的“string类的构造方法”揭示了我们要探讨的核心内容——如何初始化和创建`std::string`对象。`std::string`类不仅在日常编程中频繁使用,而且在很多高级功能如正则表达式、文本处理等方面都有重要应用,因此...
C++中的`std::string`类是处理字符串的利器,它提供了丰富的成员函数和操作,使得在C++中处理文本变得高效且易于管理。这里我们将深入探讨`std::...理解和熟练掌握`std::string`的用法,将极大提升代码的效率和可读性。
### C++中的string类 #### 引言 在C++编程语言中,`string`类是一种非常实用且功能强大的工具,它为处理文本数据提供了极大的便利。与传统的`char *`字符串相比,`string`类提供了更多的内置方法来简化字符串的...
Java 实验报告四(实现 String 类) 在本实验报告中,我们将实现 Java 中的 String 类,并了解其实现原理。 String 类是 Java 中一个非常重要的类,它提供了字符串操作的各种方法。在这里,我们将基于 ArrayList ...
总结来说,C++的string类提供了强大的字符串处理功能,其便利性体现在内存管理自动化、丰富的操作函数以及与C字符串的兼容性。在编程中,我们应该优先考虑使用string类来处理字符串,以提高代码的可读性和安全性。...
一、为什么要重写String类? 1. **定制功能**:标准库的`std::string`可能不满足某些特定需求,如特定的内存管理策略、额外的成员函数或操作符重载。 2. **教学目的**:通过实现自己的字符串类,可以更好地理解字符...
在这个总结中,我们将深入探讨String类的一些核心特性和方法。 首先,String类位于`java.lang`包中,这意味着它对所有Java程序都是自动导入的,无需额外引用。String类被声明为final,这意味着我们无法创建其子类,...
本篇总结旨在详细介绍`string` 类的构造方法、常用操作方法及其功能特性。 #### 一、`string` 类对象的构造 `string` 类提供了多种构造方法来创建`string` 对象,每种构造方法都有其特定的用途: 1. **无参构造**...
这是我自己写的一个String类,当然也结合了网上好多文档,最终总结的。这个类在小项目中完全可以恰到好处了,但是如果是大型项目,请自己再修改下,或者添加其他的类。
这篇文档总结了`std::string`类的一些主要功能和用法,包括构造函数、字符串比较、运算符重载、字符串赋值、字符串追加以及读取子串的方法。 首先,`std::string`的构造函数允许我们创建新的字符串对象。例如,`...
简单总结可以下Java中String类中的常用方法
根据提供的文件信息,我们可以从中提取出以下知识点,有关C++中如何实现自定义的string类(MyString),以及相关的知识点: 1. **C++标准库string类**: - 标准库中的string实际上是一个typedef,它基于basic_...
在Java编程语言中,`String` 和 `StringBuffer` 都是非常重要的类,它们用于处理字符串数据。虽然它们都实现了字符串操作的功能,但它们之间存在一些重要的区别,这些区别主要体现在性能、线程安全以及可变性等方面...
根据提供的文件信息,本文将围绕“String容量大小区分”这一主题进行深入探讨,结合Java语言中的String类特性,解析字符串在不同场景下的容量变化及内存管理机制。 ### 标题和描述解读:“String容量大小区分” 该...