您好,欢迎光临本网站![请登录][注册会员]  
文件名称: Java面试及答案.pdf
  所属分类: Java
  开发工具:
  文件大小: 11mb
  下载次数: 0
  上传时间: 2019-04-20
  提 供 者: sel****
 详细说明:Java面试及答案是个人从去年到今年,在面试过程中整理的一些面试中遇到的重点和难点,全部整理在这个pdf里面,希望能够给正在找工作和面试的朋友一些帮助!!1) public int indexof( int ch/ String str)//用于查找当前字符串中字符或子串,返回字 符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1 2) public int indexer( int ch/ String str, int fromlndex)//改方法与第一种类似,区别 在于该方法从 fromIndex位置向后查找 3) public int lastlndexof( int ch/ String str)/该方法与第·种类似,区别在于该方法 从字符串的末尾位置向前查找。 4) public int lastIndexof( int ch/ String str, int fromIndex)//该方法与第种方法类 似,区别」该方法从 rolodex位置向前查找。 复制代码 1 String str-I am a good student 2 int a= str indexof Ca'://a=2 3 int b= str indexof( good); //b=7 4 int c- str indexOf( w", 2); //c--1 5 int d= str last IndexOf(a);// 6 int e=str last IndexOf(a, 3);//e 复制代码 7、字符串中字符的大小写转换 1) public String toLowerCaseo/返回将当前字符串中所有字符转换成小写后的新串 2) public string toUpper CaseO//返回将当前字符串中所有字符转换成大写后的新串 String str new String("asDF 2 String strl= str. toLowerCaseo: //strl =asdf 3 String str2= str. toUpperCaseO; //str2=ASDE 8、字符串中字符的替换 1) public string replace( char oldchar, char newChar)//用字符 newChar替换当前字符 串中所有的 oldchar字符,并返回一个新的字符串。 2) public string replacefirst( String regex, String replacement)//该方法用字符 replacement的内容替换当前字符串中遇到的第一个和字符串 regex相匹配的子串,应将新 的字符串返回。 3) public String replaceAll(( String regex, String replacement)//该方汯用字符 replacement的内容替换当前字符串中遇到的所有和字符串 regex相匹配的子串,应将新的 字符串返回。 1 String str d z 2 String strl str replace(a,g); //strl="gsdzxcg 3 String str2- str replace(asd", fgh); //str2-fghzxcfgh 4 String str 3= str replacefirst(asd", fgh); //str3=fghzxcasd 5 String str4 =str replaceAll( asd",fgh ) / /str4=fghzxcfgh 9、其他类方法 1) String trim(//截去字符串两端的空格,但对于中间的空格不处理 String str=a sd 2 String strl= str trimo 3 int a= str. length(; //a=6 4 int b= strl length; //b=4 2) boolean stat With( String prefix)或 boolean endWith(String suffix)/用来比较当前 字符串的起始字符或子字符串 prefix和终止字符或子字符串suix是否和当前字符串相同, 重载方法中同时还可以指定比较的开始位置 offsct 1 String str-asdfgh 2 boolean a=str. statWith(as"); //a = true 3 boolean b= str endWith(gh); //b=true 3region Matches(boolean b, int firstStart, String other, int otherStart, int length)//从当前字符串的 firststart位置开始比较,取长度为 length的一个子字符串, other字符串丛 otherstart位置开始,指定另外一个长度为 length的字符串,两字符串比 较,当b为true时宇符串不区分大小写。 4) contains( String str)/判断参数s是否被包含在字符串中,并返回一个布尔类型的值。 tudent 2 str contains(" stu ) //true 3 str contains("ok ); //false 5) String[] split( String str)/将str作为分隔符进行字符串分解,分解后的字字符串在 字符串数组中返回 d 2 Stringl I strl str split("!#"); //str1lo| ="asdstrllll ="gwe";str1l2I 五、字符串与基木类型的转换 1、字符串转换为基本类型 java.1ang包中有Byte、 Short、 Integer、 Float、 Double类的调用方法 1)public static byte parseByte(String s 2)public static short parse Short(String s) 3)public static short parselnt(String s 4)public static long parseLong(String s 5)public static float parseFloat(String s) 6)public static double parseDouble(String s) 例如 1 int n= Integer. parseInt(12") 2 float f= Float parsefloat( 12 34") 3 double d-Double. parseDouble( 1.124") 2、基本类型转换为字符串类型 String类中提供了 String value0Q放法,用作基木类型转换为字符串类型。 static String valueOf(char data[) 2)static String valueOf(char data[, int offset, int count) 3static String valueOf(boolean b 4)static String valueOf (char c) 5)static String valueof (int i) 6)static String valueOf (long 1) static String valueOf(float f) static String valueOf (double d) 例如 1 String s1- String valueOf(12) 2 String sl= String valueOf (12. 34) 3、进制转换 使用Long类中的方法得到整数之间的各种进制转换的方法: Long. toBinary String(long 1) Long toOctalString(long 1) Long toHexString (long 1) Iong. tostring( long 1,intp)//o作为任意进制 2. String, StringBuffer, StringBuilder的区别。 java中 String、 String Buffer、 StringBuilder是编程中经常使用的字符申类,他们之间 的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。 1可变与不可变 String类中使用字符数组保存字符串,如卜就是,因为有"fina修饰符,所以叮以知 道 string对象是不可变的。 private final char value[]: String builder与 String Buffer都继承自 Abstract string builder类,在 Abstractstring Builder中也是使用字符数组保存字符申,如下就是,可知这两种对象都是 可变的 charl] valuei 2.是否多线程安全 String中的对象是不可变的,也就可以理解为常量,显然线程安全 Abstractstring Builder是 StringBuilder与 StringBuffer的公共父类,定义了一些 字符串的基本操作,如 expand Capacity、 append、 insert、 indexof等公共方法。 String Buffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。 看如下源码 1 public synchronized StringBuffer reverse 2 super. reverse) return this 6 public int indexEr(String str) return indexof (str, 0) //存在 public synchronized int indexof( String str, int fromIndex)方法 String Builder并没有对法进行加同步锁,所以是非线程安全的 3 StringBuilder与 StringBuffer共同点 String Builder与 String Buffer有公共父类 Abstractstring Builder(抽象类)。 抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要 增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。 StringBuilder、 StringBuffer的方法都会调用 Abstractstring Builder中的公共方 法,如 super. append()。只是 String Buffer会在方法上加 synchronized关键字,进 行同步。 最后,如果程序不是多线程的,那么使用 StringBuilder效率高于 String Buffer 为什么先说 String呢? 其实绝大部分业务开发过程中 String都是最常用的类。常常利用 JProfiler这类工具做 内冇分析时,能看到char[](为什么是char[]在接下来的源码解读中会有提现)能站 到70%以上。 类关系图 mparable CharSequence Appendable areTUiT): int ength(): nt append(:harsequcncc): Appendatlc har At(int) cha' append(CharSequence, int, in ] Appendable subSequence[int, int): Charsequence endtchari: a -o Stringi): String chars(: Instream codePortso): Irtstrea Abstractstring Builder string String Buffer I StringBuilder 简要对比 差别 String String Buffer StringBuilder 常量 变常量 变量 变量 量 线程 是否安个 安仝 非安仝 安全 所在 Constant 内存 String heap heap 区域Po(常量池) 是否 能被否 不 否 继承 代码 3157 448 行数 718 在频繁进行字符串运算在频繁进行字符运算 使用在字符串不经 (如拼接、替换、删除 (如拼接、替换、和删除 场景常变化的场景等) 并且运行在多线程环境并且运行在单线程的环境 场景常量的声明、少XML解析、HTP参数sQL语句的拼装、Js0N 差别 String String Buffer String Builder 举例量的变量运算解析和封装 封装 从代码行数来上说 String类更大,其中大量的方法重载拓展了篇幅。同时注释文档详 细,注释的行文风格常常看到一个简短的定义之后,紧跟一个由tha或the引导的定 语从句(定语从句一般皆放在被它所修饰的名(代)词之后)。 例: 田 iew Codel Abstractstring Builder: StringBuffer类与 StringBuilder类都继承∫ Abstractstring builder,抽象父类里实现了除 tostring以外的所有方法。 String Builder:自己重写了方法之后,全都在方法内 super function(,未做任何扩 展同时从类名语义上来说 String构建者,所以没有 substring方法看来也合情合理 String Buffer:在重写方法的同时,几乎所有方法都添加了 synchronized同步关键字; 常量与变量解释 String类是依赖一个私有字符常量表实现的 Ⅳ iew Codel String Buffer与 String Bu|der都是继承 Abstractstring Builder,然而 Abstractstring Builder类是依赖一个字符变量表实现的; E View Codel 线程安全分析 为什么 String是线程安全的? 首先, String是依赖字符常量表实现的; 其次,所有对 String发生修改的方法返回值都是一个新的 String对象,没有修改原有 对象; 小例: View Code 为什么实现了以上提到的两点就是线程安全的呢? 以 String Builder类 append方法为示例,第19行将需要添加的vaue,通过 arraycopy方法复制到dst中。 t View co 场景假设: 假设有A、B两个线程, StringBuilder初始值为"1 A线程:执行 append("2") B线程:执行 append("3"); 过程分析 CPU在执行了部分A线程的逻辑,刚好执行到第19行,此时B线程已经执行完毕: 导致A线程开始执行 append("2")时, String Builder为"1"; 执行到一半 String builder变成了"13 最后结果得到为"132"; 过程图示 Heap-String Builder 三
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: Java面试及答案.pdf
 输入关键字,在本站1000多万海量源码库中尽情搜索: