1 Eclipse相关设置
(1)去除注释
(2)更改工作区编码
(3)改变字体大小
(4)复位
windows------------------prespective---------------------reset prespective
(5)快捷键
alt + shift + s很重要。
ctrl + alt + 下建:向下赋值一行
2 jar文件的使用
使用时将jar文件粘贴至自己的项目下,并且重新buildpath。
3 导入项目到工作空间
4 断点调试
5 ==和equals()
都可以用来比较,返回值都是boolean类型,
区别:(1)==比较两端是否为同一个对象
(2)equals比较内容是否相同
6 常用类之Scanner
7 常用类之String
(1)构造方法
关于构造方法,提一下,可以运用String构造方法将字符数组转换成字符串。
(2)面试题
是不是对上述的输出很意外,equals输出的结果还是可以接受的,但是==号是不是意外了许多,其实我自己也判断失误了,这才是自己重新开始查漏补缺的真正目的。这里不得不提出一个新的概念,之前在介绍内存的时候介绍了栈,堆,方法区。这里再次回顾一下,栈只存储局部变量和方法(其实是方法以栈针的方式压入栈中),堆用来存储new出来的对象和数组,方法区存储编译的class文件,重点来了,方法区中其实是2块内存,一块存储class文件,另一块叫做常量池,在Java语言中,一切都是动态的。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。
在class文件中,“常量池”是最复杂也最值得关注的内容。
Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用
所以,在编译这个java文件时,常量池已经有了一个“abc”,当有了之后s2发现常量池中有“abc”,所以就直接存储它的地址,故他们是同一个对象。
alt+shift+m表示抽取方法
2个对象,现在常量池创建一个对象,因为new,所以在堆内存也创建了一个。
有了前面的解释下面这个就不用解释了。
java中常量优化机制
String之间的“+”号意义:
接下来的面试题就涉及到上述语句
当执行s1+“c”时,先创建StringBuilder或者StringBuffer对象,在通过append方法串联,再通过toString方法转换为String对象。
其余String方法参考jdk1.6
8 子串在父串中出现的个数
package com.haidai.debug;
import java.util.Scanner;
public class Demo_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String smallStr = "heima";
int count = 0;
int k = 0;
while(str.indexOf(smallStr, k) >= 0) {
count++;
k += smallStr.length();
}
System.out.println(count);
}
}