本帖最后由 大蓝鲸小蟀锅 于 2018-8-27 10:29 编辑
1.截取字符串返回的地址值一样吗?
返回的是一个新的字符串,所以和之前的字符串的地址值是不一样的.
2.StringBuilder 适合在什么时候用?
StringBuilder的作用:对字符串的操作,字符串的一个缓冲.
在操作字符串的时候,比如反转,我们用字符串操作:1.会产生很多垃圾(提供效率,对代码优化),
如果说我想把很多个字符串对象,拼接成一个字符串,这个时候会使用StringBuilder
3.StringBuilder操作完字符串后一定要转回String类型吗?
一般都需要,因为我们最终是为了操作字符串.虽然说StringBuilder也是用来操作字符串的但是它和String并不是一个对象
我们在使用的时候,一般都是对String操作.使用StringBuilder最要是为了简化操作(提高效率).在使用完成之后,还需要转换
String类型的字符串.
4. String作为泛型的集合ArrayList里面的年龄可以存储int类型吗?
不可以,因为泛型的类型是不支持的.
5.ArrayList 容器有上限么?
没有,可以添加任意的元素个数.
6.ArrayList 中有理论值?
默认是 16;
ArrayList集合的底层是用数组实现的.最终我们把元素是添加到数组中.数组的长度是固定的.
7.String类 有时候它类型的对象都是同一个内容,视频中刘易老师却常说内容一样
就好像他们都是同一个对象一样,有点不理解他的意思 有的对象在堆内存有的在方法区,
虽然最后都指向方法区里的
String str1 = new String("abc");执行的是堆内存,"abc"其实是存储在方法区的常量池中的.
String str = "abc";执行的是方法区中的常量池
8.现在:ArrayList<String>-元素
String--对象 即表示个体---(并列元素姓名,年龄)
如果表示国家-----省-----市-----县-----个体(姓名,年龄...)如何写集合类?(即ArrayList有类似三维至n维数组的吗?)
9.怎样才能让String形式参数的改变直接影响实际参数。
定义一个有返回值类型的方法,返回的结果,直接复制给原有字符串.
虽然String是一个引用数据类型,但是他是一个常量,在作为参数传递的时候和基本数据类型是一样的.
10.如何遍历集合长度固定的字符串(长度为5的字符串)
如果变量集合: 通过 集合中size(),get(int index);
ArrayList<String> list = new ArrayList<String>();
list.add("heima");
//1.变量集合
//2.做判断找到想要找到元素
String str = get(0);
//if(str.equals("heima")){
if(str.length == 5){
char[] arr = str.toCharArray();
for(int i = 0; i < arr.length();i++){
}
}
11. String s1="a"; // 在定义常量池中的
String s2=s1+"b"; //因为在里面有变量s1.
//在堆中操作的:
//会在堆中创建一个StringBuilder对象
//第一步: append(s1);
//第二步: append("b")
//第三步:将到的StringBuilder对象通过 toString()方法转换成String对象.赋值给 s2;
String s3="a"+"b";//常量优化机制
System.out.println(s2=="ab");
System.out.println(s3=="ab");
第一个打印为什么为false,第二个打印为true?
12.ArrayList<String> array 用System.out.println( array);打印的时候为啥结果直接是值,而不是地址值?可
是ArrayList<Student> student 直接打印的则是地址值。是因为前者有系统默认的toString方法,后者没有么?
如果你打印的是一个对象,而且该对象打印出来并不是一个地址值,而是一个带有属性值的字符串.那么该类定然是重写了Object类中的toString()方法.
因为在打印的过程中,会自动调用该方法.
13.能否创建一个集合,可以容纳不同数据类型的元素
可以,在定义泛型的时候,可以定义Object类
或者可以把泛型给省略.
14.有一类数据
例{heima,shanghai,wuhan}
如何把字符串中的带h的取出然后去除h(或者在h后面添加某些字符),再重新放回数组中
String[] arr = {heima,shanghai,wuhan};
//1.对数组进遍历
for(int i = 0; i < arr.length; i++){
String str = arr;
int index = -1;
index = str.indexOf("h");
arr = str.substring(index + 1);
}
15.为什么创建一个对象先键盘录入整数无法再录入字符串?
a.创建一个Scanner对象
Scanner sc = new Scanner(System.in);
//如果我们想录入一个字符串
String line = sc.nextLine();
//再录入一个int类型
int i = sc.nextInt();
//无论是你录入的那种数据类型,结束标志是什么? 我们会点击回车键.点了回车键电脑做了哪些动作, 它输入了一个命令
//这个命令让 键盘录入认为此行已经结束了: \r\n
// \r\n 只是一个命令,不用来输出到控制台,但是如果是字符串会将这个命令吸收.
//但是如果是一个int类型,只能用来操作int类型,如果去把\r\n吸收,会留着录入行中.
//如果下一个录入是 nextLine, 会把之前int留下来的\r\n给吸收,nextLine遇到\r\n就证明该行已经结束.
16."=="和equals有什么相同点和不同点(面试)
==:是关系运算符,可以用来做比较.
如果是基本数据类型,比较的是值
如果是引用数据类型,比较的是地址值.
equals:是String类中的方法,只有对象才能够调用该方法.
是用来比较两个字符串的内容是否相同.
String str = new String("abc");
Stirng str1 = "abc";
用str == str1比较返回的肯定是false;
str.equals(str1): 只要内容相同返回的就是true;
|
|