关于IO流和String常见的一些面试题
1.生成一个随机100内的小数,转化为保留两位小数的字符串,不考虑四舍五入的问题
2.获取当前日期,并把这个日期转化为指定格式的字符串,如:2088-08-08
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Math.random() 方法用于返回一个随机数; 随机数范围为 0.0 =< Math.random < 1.0
* java.lang.Object
* --java.text.Format
* ---java.text.NumberFormat
* ---java.text.DecimalFormat (DecimalFormat类继承于text.NumberFormat-->text.Format -->lang.Object)
* 构造方法: DecimalFormat(String pattern) 使用给定模式和默认 FORMAT语言环境的符号创建DecimalFormat。
* */
public class Example01 {
public static void main(String[] args) {
double d = Math.random()*100;//1.生成一个100以内的随机数
// System.out.println(d);
DecimalFormat df = new DecimalFormat("0.00");//给定保留两位小数的形式
String str = df.format(d);
System.out.println(str);
//2. java.util.Date -->new一个日期类对象 --->格式转换器-->自定义转换格式SimpleDateFormat
Date date=new Date();
// System.out.println(date);
SimpleDateFormat simple2 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(simple2.format(date));
}
}
- 要求对"34 9 -1 78 3 22"字符串中的数值进行从小到大的排序,变成一个数值有序的字符串:-1 3 9 22 34 78
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class ListSort {
public static void main(String[] args) {
//34 9 -1 78 3 22 -->要排序必须是类实现了Comparable接口
String str = "34 9 -1 78 3 22" ;
sort(str);
}
private static void sort(String str) {
String [] a = str.split(" ") ;//使用字符串的分割方法,按照空格分割
//System.out.println(Arrays.toString(a));
int [] b = new int [a.length] ;
//遍历
for (int i = 0; i <a.length ; i++) {
Integer in=Integer.valueOf(a[i]);//此处定义一个Integer包装类,并调用valueOf()把遍历出来的数字传给Integer包装类
b[i]=in;
}
//Arrays.sort(int [])方法--->static void sort(int[] a) 将指定的数组按升序排序
Arrays.sort(b);//排序
//再将排好序的int数组,转换为字符串
String[] str1=new String [b.length];
for (int i = 0; i < b.length; i++) {
str1[i]=b[i]+"";
System.out.print(str1[i]+" ");
}
}
}
4.将一个随机字符串中的所有字符升序排列,并倒序打印 字符串为"dfhwd1287sdfj"
/**
* Class String
* --java.lang.Object
* --java.lang.String
* 实现的所有接口
* Serializable , CharSequence, Comparable<String>
*
* */
public class ReverseSort_String {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要输入的字符串:");
String str=sc.next();
sort(str);
}
public static void sort(String s){
//char[] toCharArray() 将此字符串转换为新的字符数组。
char[] ch= s.toCharArray();
Arrays.sort(ch);//static void sort(char[] a) 将指定的数组按升序排序。
System.out.println("升序排序:");
for(char chs : ch) {
System.out.print(chs+" ");
}
System.out.println();
System.out.println("输入字符串的倒序排列为:");
for (int i = ch.length - 1; i >= 0; i--) {
System.out.print(ch[i] + " ");
}
}
}
5.编写敏感词过滤程序
说明:在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。
如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等,这些都不可以在网上进行传播,需要过滤掉或者用其他词语替换掉。
public class SensitiveWord_StringDemo {
public static void main(String[] args) {
String [] sensibilityWord=new String []{"性", "色情", "爆炸", "恐怖", "枪", "军火"};
String str="美丽国的恐怖,爆炸、强奸、枪支军火和色情泛滥,黑人的命很卑微!";
for (int i= 0; i < sensibilityWord.length; i++) {
str = str.replace(sensibilityWord[i], "#");
}
System.out.println(str);
//String substring(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串。
String str1="ABCDE";
System.out.println(str1.substring(3));
System.out.println(str1.concat("XYZ"));;
System.out.print(str1);
}
}
六、选择题
1.下列String类的(B)方法返回指定字符串的一部分(选择一项)
A.extractstring()
B.substring()
C.Substring()
D.Middlestring()
2.对于下列代码:
String str1="java";
String str2="java";
String str3=new String("java");
StringBuffer str4=new StringBuffer("java");
3. 以下表达式的值为true的是(A)
A) str1= =str2; B) str1= =str4;
C) str2= =str3; D) str3= =str4;
4.以下程序段输出结果的是(C)
public class Test {
public static void main(String args[]){
String str="ABCDE";
str.substring(3);
str.concat("XYZ");
System.out.print(str);
}
}
A) DE B) DEXYZ C) ABCDE D) CDEXYZ
5.以下代码的运行结果是哪一项。(B )
public class TestStringContructor{
public static void main(String[] args){
byte [] b = {49,50,51,52,53};
String myString = new String(b);
System.out.println(myString);
}
}
A)45555 B)12345
C)90123 D)4950515253
七.简答题
1.在 JAVA 中如何跳出当前的多重嵌套循环?
答:使用带有标号的的break语句
2.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
答:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。
3.用最有效率的方法算出2乘以8等於几?
答: int i = 2; int j = i << 3;
4.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
答:Math.round(11.5)=12,Math.round(-11.5)=-11
5.是否可以从一个static方法内部发出对非static方法的调用?
答:不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时候不需要创建对象,可以直接调用。也就是说,当一个static方法被调用的时候,可能还没有创建任何的实例对象,如果从一个static的方法中发出来对非static方法的调用,那个非static方法是关联到那个逻辑上的呢,这个逻辑无法成立,所以,一个static的方法的内部发出对static方法的调用。
6.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答:引用变量不能变,对象的内容可以改变
7.请说出作用域public,private,protected,以及不写时的区别?
答:public是公共的权限,也就是在同类下、同包下、不同包下都可以访问。
Private私有的只能在当前类下访问;protected修饰的成员变量和函数能被类本身、子类及同一个包中的类访问。没有写就是default,它是针对本包设计的,它所修饰的在本包下的其他类都访问。
8.Integer与int的区别
答:Integer是引用数据类型,是包装类,int是基本数据类型。
9.String是最基本的数据类型吗?
答:String是引用数据类型
10.是否可以继承String类?
答:不可以,因为String类被final修饰了,
public final class String
implements java.io.Serializable, Comparable, CharSequence
11.下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
答:7个
12.说出一些常用的类,包,接口,请各举5个
答:常用的类有:String、Integer、java.util.Date,BufferedReader、
BufferedWriter、FileReader、FileWirter;常用的接口有List、Serializable , CharSequence, Comparable,常用的包java.lang包、util包、java.io、java.sql
13.能不能自己写个类,也叫java.lang.String?
答:不能
14.构造器Constructor是否可被override?
答:Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。