java-se-面试(1)-字符串

http://blog.csdn.net/zhangerqing/article/details/8093919

hashCode和identityHashCode的区别

I、 hashCode()方法是Object类下面的一个方法,供继承类重写,根据对象内存地址计算哈希值,String类重写了hashCode方法,并改为根据字符序列来计算哈希值

II、identityHashCode()方法是System类中的静态方法,根据对象内存地址来计算哈希值;

方法示例:

    public static void main(String[] args)
    {
        // 下面程序中s1和s2是两个不同对象
        String s1 = new String("Hello");
        String s2 = new String("Hello");
        // String类重写了Object类的hashCode方法——改为根据字符序列计算hashCode值,
        // 因为s1和s2的字符序列相同,所以它们的hashCode方法返回值相同
        System.out.println(s1.hashCode() + "----" + s2.hashCode());
        // s1和s2是不同的字符串对象,所以它们的identityHashCode值不同,
        // identityHashCode是根据对象的地址计算得到的,所以任何两个不同的对象的
        // identityHashCode值总是不相等
        System.out.println(System.identityHashCode(s1) + "----"+ System.identityHashCode(s2));
        // s3和s4是相同的字符串对象,所以它们的identityHashCode值相同
        String s3 = "Java";
        String s4 = "Java";
        System.out.println(System.identityHashCode(s3) + "----"+ System.identityHashCode(s4));
    }

输出:

时间: 2024-07-30 10:24:04

java-se-面试(1)-字符串的相关文章

黑马程序员 Java SE回顾

----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java SE基础回顾 1.循环语句中的break是终止全部循环,跳出循环体:而continue是终止本次循环,跳执行下一循环 2.return语句有两个作用:返回值:结束方法的运行 3.对于java中面向对象的理解:以类的方式组织代码,以对

Java SE 7 异常处理

Java SE 7 在日常编程中对一些内容进行了优化 具体有以下几种 1.switch 语句中支持字符串String 如:switch("a") 2.更好的整型字符串 3.泛型改进类型推断<> 4.优化了异常处理 5.简化了可变参数方法调用 我这次主要说的是优化的异常处理具体内容是:多重捕获.重新抛异常和try -with -resources. 1.多重捕获异常 JAVA SE7中新增了多重捕获异常,以便更轻松更简洁的处理异常.以后淘宝线上服务器都切换到JAVA 7的时候

《写给大忙人看的java se 8》笔记

现在才来了解java8,是不是后知后觉了点? 新的编程技术,个人不喜欢第一时间跟进. 待社区已有实践积淀再切入似乎更划算些? 一点点精明的考虑. 不多说,上代码. //读<写给大忙人看的java se 8>做的笔记代码 //希望对忙到连这书都没工夫看的你,匆匆一瞥,留下印象 //祝编程愉快 public class MainTest { //第一章,讲lambda表达式 //lambda表达式类似javascript的函数字面量,可用于替代java的匿名内部类 //基本型为 (形参列表)-&g

Java SE(1):基础语法

关键字: 被Java语句赋予特殊含义的单词,所有关键字都是小写 标识符: 程序中自定义的一些名称,由字母.数字._ 以及 $ 符号组成,数字不能开头,区分大小写(命名规范) 注释: // 单行注释 /* 多行注释 */ /** 文档注释 */ 常量: 整数常量.小数常量.布尔型常量.字符常量.字符串常量.null 变量: 数据类型 变量名 [= 初始化值]; 数据类型: 基本数据类型.引用数据类型 数值型 整数类型:byte.short.int.long 浮点类型:float.double 字符

程序猿二三事之Java基础--Java SE 5增加的特性--语法篇(一)

程序猿二三事之Java基础–Java SE 5增加的特性–语法篇(一) [ TOC ] 为什么是Java SE 5? 目前已经到了JDK-8u74了,JDK7的主版本已经于2015年4月停止公开更新. 那为什么还要来说Java/JDK5呢? Java SE在1.4(2002)趋于成熟,随着越来越多应用于开发企业应用,许多框架诞生于这个时期或走向成熟. Java SE 5.0的发布(2004)在语法层面增加了很多特性,让开发更高效,代码更整洁. 自动装箱/拆箱.泛型.注解.for循环增强.枚举.可

Java SE 6 新特性: 编译器 API

新 API 功能简介 JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中.在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: 分析 JSP 代码: 生成 Java 代码: 将 Java 代码写入存储器: 启动另外一个进程并运行编译器编译 Java 代码: 将类文件写入存储器: 服务器读入类文件并运行: 但如果采用运行时编译,可以同时简化步骤 4 和 5,节约新进程的开销和写入存储器的输出开销,提高系统效率.实际上,在 JD

2015阿里巴巴春季Java实习生面试经验

2015阿里巴巴春季Java实习生面试经验 一.笔试 大概今年四月初的时候在线进行了笔试,笔试题目都是考基础的,包括数据结构.计算机网络.操作系统.数据库原理等,Java基础的话不用说,个人建议可以去看一下<Java编程思想>这本书,这本书提到了许多细节的东西,是初学者提升Java基础的一本好书. 网上笔试不久,就收到了阿里的短信和邮件,说我通过了网上笔试和简历筛选,并叫我到网上去预约时间,我登录到网上的时候才发现,距离面试时间(5月5日~5月7日)还有差不多一个月的时间,因为我选择的面试地点

Java SE 8 新特性之旅 : Java开发世界的大变动

我很自豪的成为了adopt-OpenJDK的一员,像其他专业团队成员一样,但是我只刚加入了8个月,我们一同经历了Java SE 8 的开发.编译.编码.讨论--等等,直到JDK上线.Java SE 8发布于2014年3月18日,现在可供下载使用. 我很高兴发布这一系列"Java SE 8 新特性之旅",我会写一些例子来简化Java SE 8知识的获取.开发经验.新特性和API,然后 利用你的知识,提高你的编码能力,同时提高你的生产力.我希望你能像我写文章一样享受它. 我们将游览Java

java之面试String

1 new  String()与直接赋值的区别? String  s1=new String("abc"); String  s2="abc"; System.out.println(s1==s2);      //false 详解: 上面两行代码分别会存在内存中三块存储区中,分别是栈,堆,方法区 ,字符串只会创建一次,第一次创建完,后面再用到相同字符串时只会去方法区中找,有则直接用,没有再创建 栈: s1    0x001                   s2

Java SE 6 新特性: Java DB 和 JDBC 4.0

http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何使用 Java 语言高效.可靠.简洁地访问数据库一直是程序员们津津乐道的话题.新发布的 Java SE 6 也在这方面更上层楼,为编程人员提供了许多好用的新特性.其中最显著的,莫过于 Java SE 6 拥有了一个内嵌的 100% 用 Java 语言编写的数据库系统.并且,Java 6 开始支持 J