java关于string最常出现的面试题整理

在学习了不少使用string处理字符串的方法后,对于这方面基础内容模块已经初步掌握。对于java面试时,字符串是比较基础和重点的模块,所以在学习和复习的时候,都需要在这方面做重点的学习。我们把试题分为基础内容和实例代码试题的运行两个部分,下面一起来看看具体内容。

一、基础内容

1.String类型是基础类型吗

基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个

Java.lang.String类是final类型的,因此不能继承,修改这个类.为了提高效率节省空间,应该用StringBuffer类。

2.针对安全保密高的信息,char[]比String更好的原因

因为String是不可变的,就是说它一旦创建,就不能更改了,直到垃圾收集器将它回收走。而字符数组中的元素是可以更改的(译者注:这就意味着你就可以在使用完之后将其更改,而不会保留原始的数据)。所以使用字符数组的话,安全保密性高的信息(如密码之类的)将不会存在于系统中被他人看到。

3.String 可以被子类继承吗

既然 String 是 final 的,所以不能被继承。

4.可以自定义 java.lang.String 类并使用吗

可以自定义 java.lang.String 类并编译成功,但不能被加载使用,具体请学习类加载机制。

二、实例试题

1.判断定义为String类型的s1和s2是否相等

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));

2.写一个方法,实现字符串的反转,如:输入abc,输出cba

public static String reverse(String origin) {
 //方式1
 //return new StringBuffer(origin).reverse().toString();
 //方式2
 /*String end = "";
 for (int i = origin.length()-1; i >= 0; i--) {
  end += origin.charAt(i);
 }*/
 //方式3
 StringBuilder end = new StringBuilder("");
 for (int i = origin.length()-1; i >=0 ; i--) {
  end.append(origin.charAt(i));
 }
 return end.toString();
}

面试题扩展:

1. String是最基本的数据类型吗?

基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个.

Java.lang.String类是final类型的,因此不能继承,修改这个类.为了提高效率节省空间,应该用StringBuffer类.

2. Strings=”Hello”;s=s+”world!”;这两句代码执行后,原始的String对象中的内容变没?

没有,因为String被设计成为不可变类,不能修改,继承,代码执行后,s所指向的对象”hello”没有改变.不过s不指向s,而是指向了另外一个String.原来的对象还在内存中,只是不指向了.

们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。

3. String是否可以被继承?

不可以,因为String类似final类.

4. Strings=new String(“xyz”);创建了几个String Object?二者之间有什么区别?

两个或一个,

”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过'xyz',这句代表就不会创建”xyz”自己了,直接从缓冲区拿。

到此这篇关于java关于string最常出现的面试题整理的文章就介绍到这了,更多相关java中string的面试题整理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JAVA面试题 从源码角度分析StringBuffer和StringBuilder的区别

    面试官:请问StringBuffer和StringBuilder有什么区别? 这是一个老生常谈的话题,笔者前几年每次面试都会被问到,作为基础面试题,被问到的概率百分之八九十.下面我们从面试需要答到的几个知识点来总结一下两者的区别有哪些? 继承关系? 如何实现的扩容? 线程安全性? 继承关系 从源码上看看类StringBuffer和StringBuilder的继承结构: 从结构图上可以直到,StringBuffer和StringBuiler都继承自AbstractStringBuilder类 如何

  • JAVA中String介绍及常见面试题小结

    字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 深刻认识String 1)String为字符串常量:即String对象一旦创建之后该对象是不可更改的.(源码如下) String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); System.out.println(str1 == st

  • java String校招面试题过程详解

    面试题一:判断下列程序运行结果 package String_test; public class test_1 { public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "HelloWorld"; String str3 = new String("HelloWorld"); String str4 = "Hello&quo

  • JAVA面试题String产生了几个对象

    面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest { public static void main(String[] args){ String s1="Hello"; String s2="Hello"; String s3=new String("Hello"); System.out.pr

  • Java常用类String的面试题汇总(java面试题)

    1.比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等.简单来说,基本数据类型都可以使用==.而引用类型使用==比较不了. 2.如何将字符串转化成int? 使用包装类Integer.Integer.valueOf("2");其他基本数据类型都是类似 3.为什么在Java中存储密码要使用char[],而不使用String. 因为St

  • java关于string最常出现的面试题整理

    在学习了不少使用string处理字符串的方法后,对于这方面基础内容模块已经初步掌握.对于java面试时,字符串是比较基础和重点的模块,所以在学习和复习的时候,都需要在这方面做重点的学习.我们把试题分为基础内容和实例代码试题的运行两个部分,下面一起来看看具体内容. 一.基础内容 1.String类型是基础类型吗 基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个 Java.lang.String类是final类型的,因此不能继承,修改

  • Java开发人员最常犯的10个错误

    这个列表总结了10个Java开发人员最常犯的错误. Array转ArrayList 当需要把Array转成ArrayList的时候,开发人员经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.util.ArrayList类.java.util.Arrays.ArrayList类实现了set(), get(),c

  • 两万字详解Java Sring String的常见操作以及StringBuffer StringBuilder的区别

    目录 前言 1. 定义字符串 2.字符串比较相等 equals 使用注意事项 3. 字符串常量池( 多图解析 ) 第一个列子解析: 第二个列子解析: 第三个列子解析: 第四个列子解析: 第五个列子解析: 第六个列子解析: 第七个列子解析: 第八个列子解析: 面试题:请解释String类中两种对象实例化的区别 4. 理解字符串不可变 5.字符, 字节与字符串 字节与字符串 小结 6. 字符串常见操作 6.1 字符串比较 6.2 字符串查找 6.3 字符串替换 6.4 字符串拆分 6.5 字符串截取

  • java锁synchronized面试常问总结

    目录 synchronized都问啥? synchronized是什么? synchronized锁什么? synchronized怎么用? 结语 synchronized都问啥? 如果Java面试有什么是必问的,synchronized必定占据一席之地.初出茅庐时synchronized的用法,成长后synchronized的原理,可谓是Java工程师的“一生之敌”. 按照惯例,先来看synchronized的常见问题(在线Excel同步更新中): 根据统计数据可以总结出synchronize

  • JAVA中string数据类型转换详解

    在JAVA中string是final类,提供字符串不可以修改,string类型在项目中经常使用,下面给大家介绍比较常用的string数据类型转换: String数据类型转换成long.int.double.float.boolean.char等七种数据类型 复制代码 代码如下: * 数据类型转换 * @author Administrator * */ public class 数据类型转换 { public static void main(String[] args) { String c=

  • java中String类型变量的赋值问题介绍

    运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String[] args) { Example ex = new Example(); ex.change(ex.str, ex.ch); System.out.println(ex.str);

  • Java中string和int的互相转换问题

    int -> String int i=12345; String s=""; 核心:s=i+""; String -> int s="12345"; int i; 核心:i=Integer.parseInt(s); package com.fry.util; public class Transfer { public void stringToInt(){ String id="20171091"; int n

  • 详细分析Java中String、StringBuffer、StringBuilder类的性能

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看API会发现,String.StringBuffer.StringBuilder都实现了 CharSequence接口,虽然它们都与字符串相关,但是其处理机制不同. String:是不可改变的量,也就是创建后就不能在修改了. StringBuffer:是一个可变字符串序列,它与String一样,在内存中保存的都是一个有序的字符串

  • 从内存方面解释Java中String与StringBuilder的性能差异

    以前经常在网上看到关于Java字符串拼接等方面的讨论.看到有些Java开发人员在给新手程序员的建议中类似如下写道: 不要使用+号拼接字符串,要使用StringBuffer或StringBuilder的append()方法来拼接字符串. 不过,用+号拼接字符串就真的那么令人讨厌,难道使用+号拼接字符串就没有一点可取之处吗? 通过查阅Java API文档中关于String类的部分内容,我们可以看到如下片段: "Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串

随机推荐