package com.tarena.day13; import java.util.Arrays; import java.util.Comparator; public class AnnDemo { /** * 匿名类,匿名内部类,也是一个局部内部类 * 不使用class关键字 * 是对原类的继承/实现,没有类名,默认创建实例 */ public static void main(String[] args) { Goo goo = new Goo(){ int getA() { System.out.println("调用了方法getA()"); return super.getA(); } }; System.out.println(goo.getA()); Xoo xoo = new Xoo(){//经常使用匿名类,便捷的 //实现接口或者抽象类 public int add(int a, int b) { return a+b; } }; System.out.println(xoo.add(1, 3)); String[] ary = {"Tom","Jerry","Angely","John"}; Arrays.sort(ary);//默认排序字符编码顺序 System.out.println(Arrays.toString(ary)); //我的排序规则(Comparator);按照字符串长度比较 Comparator<String> byLength = new Comparator<String>(){ public int compare(String o1,String o2) { String s1 = (String)o1; String s2 = (String)o2; return s1.length() - s2.length(); } }; Arrays.sort(ary,byLength); System.out.println(Arrays.toString(ary)); } } interface Xoo{ int add(int a,int b); } class Goo{ int a=3; int getA(){return a;} } package com.tarena.day13; public class InnerDemo { /** * 成员内部类 * 大多用来表示,类内部中存在的概念 * @param args */ int a= 2; public static void main(String[] args) { //Foo foo = new Foo();//错误,不能访问非静态资源 //System.out.println(a);//错误,同上 InnerDemo demo = new InnerDemo(); demo.test(); } public void test(){ Foo foo = new Foo(); System.out.println(foo.getA()); } private class Foo{ int getA(){return a;} } } package com.tarena.day13; public class ProcDemo { /** * 局部内部类,在方法中声明内部类,作用域类似局部变量 * @param args */ public static void main(String[] args) { final int a = 4; class Foo{//作用域之在当前方法中 int test(){ return a; //局部内部类访问局部变量,变量必须final } } Foo foo = new Foo(); System.out.println(foo.test()); } } package com.tarena.day13; public class StaticInnerCLassDemo { static int a =3; public static void main(String[] args) { Foo foo = new Foo();//内部访问 System.out.println(foo.getA()); } public static class Foo{ public int getA(){//内部类访问外部资源 return a; } } } class Koo{ public void test()//外部访问 { StaticInnerCLassDemo.Foo f = new StaticInnerCLassDemo.Foo(); System.out.println(f.getA()); } } package com.tarena.day13; import java.util.LinkedList; public class LinkedLIstDemo { public static void main(String[] args) { LinkedList list = new LinkedList(); Node head = new Node("忐忑"); head.next = new Node("月亮至上"); head.next.next = new Node("甜密密"); head.next.next.next = new Node("我的祖国"); System.out.println(head); } } class Node{ Object data; Node next; Node(Object o){ data = o; } public String toString(){ if(next == null) return data.toString(); return data +""+next; } }