class StringEqualTest { public static void main(String[] args) { String s1 = "Programming";//直接从常量池中取值,s1为常量池的地址值 String s2 = new String("Programming");//s2为new出来对象(堆内存)的地址值 String s3 = "Program" + "ming";//在编译的时候已经自动编译为String s3 = "Programming";因此也是只想常量池中的地址值 System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s1 == s1.intern());//s1.intern()对应的是常量池中该对象的引用,因此一致,如果左右均改为s2则为false }}
2.``` class Outer {
class Inner {}
public static void foo() { new Inner(); }//因为是静态类,Outer还没有被实例化,不能实例化Inner(内部类)
public void bar() { new Inner(); }//该方法为普通方法,要调用该方法肯定要先实例化Outer,因此可以在方法内实例化Inner
public static void main(String[] args) { new Inner();//main方法也是静态方法,在静态中,要创建内部类对象,可以用new Outer().new Inner(); } }
3.有关便利一个文件夹以及下面的所有子文件的目录
class ShowFileTest {
public static void main(String[] args) throws IOException { //PATH类是javaNIO.APi的新出的类,是File的升级版本。而PATHS.get(String path)方法是获得path类的方法 Path initPath = Paths.get("/Users/Hao/Downloads"); // Files.walkFileTree()是遍历文件夹下的文件的,此方法需要指定根路径或起始路径。以及要重写SimpleFileVisitor的实现类的两个方法:preVisitDirectory和visitFile。两个方法定义了在访问目录和文件期间想做的事。 Files.walkFileTree(initPath, new SimpleFileVisitor<Path>() {
@Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {//访问文件 System.out.println(file.getFileName().toString()); return FileVisitResult.CONTINUE; } //之所以注释掉是因为我们目前只要文件名,不要对文件夹进行操作。当我们需要对子文件夹进行操作的时候么就可以重写这个方法了
/* @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs){ //访问文件 System.out.println(">>>>Dir : " + dir); return FileVisitResult.CONTINUE; } */
}); } }
4.如何实现JSP或Servlet的单线程模式?答:对于JSP页面,可以通过page指令进行设置。<%[@page](https://my.oschina.net/u/937418) isThreadSafe=”false”%>对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。 说明:如果将JSP或Servlet设置成单线程工作模式,会导致每个请求创建一个Servlet实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。