`

关于String对象的一些注解

阅读更多

测试一
publicclassStringTest{
publicstaticvoidmain(String[]args){
Strings1=newString("abc");//此句代码产生后在内存中会产生几个对象?
//执行完第一句代码后,在内存中创建两个对象。
//分析:首先Java会根据"abc"在StringPool(字符串池)中查找"abc",如果没有该
//字符串则在StringPool中创建一个对象。然后在通过new关键字在Java内存堆栈中创建
//一个"abc"对象,并且由s1变量指向它。
Strings2="abc";//此句代码产生后在内存中会产生几个对象?
//在执行第二句代码时,Java会依据上面的顺序首先在StringPool中查找"abc",如果
//找到有此项,则变量s2指向StringPool中的"abc"。
Strings3=newString("abc");//此句代码产生后在内存中会产生几个对象?
//在执行第三句代码时,Java首先也会在StringPool中查找"abc"对象,然后在内存堆栈
//中创建一个新的对象"abc"并且s3变量指向它。

System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s2==s3);
/*
publicStringintern()返回字符串对象的规范化表示形式。
一个初始时为空的字符串池,它由类String私有地维护。
当调用intern方法时,如果池已经包含一个等于此String对象的字符串
(该对象由equals(Object)方法确定),则返回池中的字符串。
否则,将此String对象添加到池中,并且返回此String对象的引用。
*/
System.out.println(s1==s1.intern());
//s1.intern()会返回s2的内存地址。所以此句代码会打印false。
System.out.println(s2==s2.intern());
System.out.println(s1.intern()==s3.intern());
}
}
内存示意图:



测试二
publicclassStringTest2{
publicstaticvoidmain(String[]args){
Stringhello="hello";
Stringhel="hel";
Stringlo="lo";

System.out.println(hello=="hel"+"lo");
//在"+"两边都是常量字符串,则将两个字符串合并并且在StringPool中查找"hello"
//并返回在StringPool中的内存地址正好也是hello变量的内存地址,所以第一句代码会输出true。
System.out.println(hello=="hel"+lo);
//如果在"+"两边有一边是引用类型变量,Java会将合并成一个字符串并且在堆栈中创建一个
//新的对象并且返回内存地址,所以这句代码是输出false。
}

}

转至: guenli Java的String经典笔试题付注解

分享到:
评论

相关推荐

    Java的String类

    这使得`String`类在多线程环境中非常安全,同时也带来了一些性能上的考量。本文将深入探讨`String`类的各种构造函数、方法及其用途,帮助读者更全面地理解并运用这一关键类。 #### 构造函数 `String`类提供了多种...

    @TypeDiscriminator注解实现多态对象的查询,jackson @JsonTypeInfo注解实现controller多态支持

    `@TypeDiscriminator` 和 `@JsonTypeInfo` 这两个注解分别来自Spring和Jackson库,它们用于解决序列化和反序列化过程中多态对象的处理问题。 首先,`@TypeDiscriminator` 是Spring Data JPA提供的一种注解,用于在...

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数

    要获取类上的注解,可以使用`Class`对象的`getAnnotations()`方法,它返回一个包含该类所有注解的数组。例如: ```java Class<?> clazz = MyClass.class; Annotation[] annotations = clazz.getAnnotations(); ...

    JaxbContext生成xml文件或java类对象转化注解

    JAXBContext 生成 XML 文件或 Java 类对象转换注解 JAXB(Java API for XML Binding)是一种将 Java 对象与 XML 进行转换的技术。JAXB 提供了一个快速便捷的方式将 Java 对象与 XML 进行转换。在 JAX-WS(Java 的 ...

    JAXB-XML注解

    JAXB 提供了一些注解来控制 Java 对象和 XML 之间的转换过程。这些注解可以应用于 Java 类、字段、方法和构造函数,以控制 XML 绑定过程。 一、@XmlType 注解 @XmlType 注解用于类级别的注解,用于指定 Java 类...

    Java自定义注解使用反射获取字段注解

    例如,我们可以编写一个注解处理器来生成getter和setter方法,或者在运行时根据注解动态改变对象的行为。 总结一下,Java的自定义注解结合反射机制,为我们提供了强大的元数据功能,可以用来增强代码的可读性、可...

    关于pojo类注解

    在Java开发中,POJO(Plain Old Java Object)类是一种简单的对象模型,通常用于表示数据库中的实体或业务逻辑中的对象。POJO类不依赖于任何框架,但当我们使用ORM(Object-Relational Mapping)框架如Hibernate时,...

    关于java注解比较详细的例子

    - 编译时验证:例如,JSR 303/349的`javax.validation`包提供注解来校验对象的属性。 - 配置管理:Spring框架广泛使用注解来简化依赖注入和配置。 通过以上介绍,我们可以看到Java注解在简化编程、增强代码可读性...

    java springboot MultipartFile 根据注解自动识别表头对应对象字段名称,方法返回List-Map 对象

    根据注解(ExcelNameAnno)自动识别表头对应对象字段名称,方法返回Map<String, String>对象 -- 有问题请联系:vinfol@qq.com 或私信 -- 主要实现: 通过动态传入对象class,解析class对象中包含ExcelNameAnno注解...

    基于注解的Spring MVC小demo

    public String sayHello() { return "hello"; } } ``` 这里的`sayHello`方法将处理所有 `/hello` 的GET请求,并返回 "hello" 视图名。这个视图名通常会解析为一个JSP页面,比如 `hello.jsp`。 对于新手来说,...

    JavaBean与JsonString的相互转换

    在某些情况下,JavaBean的属性与JsonString中的键可能不完全匹配,或者需要进行一些特殊处理,这时可以通过注解或自定义`JsonSerializer`和`JsonDeserializer`来实现。 总结,JavaBean和JsonString的转换是Java...

    注解,注解的示例以及解释说明,能让大家更好的了解注解的使用方式

    Java标准库提供了一些预定义的注解,如: 1. `@Override`: 检查方法是否真正覆盖了超类的方法。 2. `@Deprecated`: 标记不再推荐使用的代码,编译器会发出警告。 3. `@ SuppressWarnings`: 抑制编译器警告,可以指定...

    基于注解形式的Java操作excel表格

    一些库支持批处理,允许一次性读取或写入多行数据,避免了频繁的磁盘I/O操作,从而提高了效率。 总的来说,基于注解的Java操作Excel提供了一种直观且灵活的方式来处理Excel文件,使得代码更加整洁,降低了学习曲线...

    java自定义注解和通过反射获取注解

    注解(Annotation)是一种元数据,提供了在编译时和运行时对代码进行标记的方法,而反射(Reflection)则是Java提供的一种能力,允许程序在运行时检查和操作类、接口、字段和方法等对象。接下来,我们将深入探讨这两...

    Java自定义注解实例

    3. **持久化**: JPA(Java Persistence API)的`@Entity`、`@Table`等注解用于映射Java对象到数据库表。 4. **测试辅助**: JUnit中的`@Test`注解标记测试方法,`@Before`和`@After`用于设置和清理测试环境。 5. **...

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。

    Spring注解收集1

    此外,还提到了其他一些重要的注解,如`@Resource`、`@Scope`、`@Qualifier`等,以及如何在Spring配置文件中启用注解支持。掌握这些注解能够帮助开发者更好地理解和使用Spring框架,提高开发效率和代码质量。

    java注解webservice学习第一篇

    本文将深入探讨如何使用Java注解来构建Web服务,并结合给出的“lib”压缩包文件,推测可能包含了一些用于支持Web服务的库文件。 首先,让我们了解什么是Web服务。Web服务是一种基于互联网的软件应用,允许不同的...

    ssh框架构建 hibernate注解 spring注解

    **Hibernate** 是一个流行的ORM(对象关系映射)框架,用于将Java对象与数据库表进行映射。在传统的Hibernate配置中,我们需要编写大量的XML映射文件。然而,使用注解,我们可以直接在实体类和属性上进行配置,如`@...

    运行时注解demo

    运行时注解(Runtime Annotation)是Java编程语言中的一种特性,它允许程序员在代码中添加元数据...在“RuntimeAnnotationDemo”这个压缩包中,可能包含了更多关于运行时注解的实际应用示例,你可以进一步研究和学习。

Global site tag (gtag.js) - Google Analytics