网站策划步骤,怎么自己弄一个网站,南宁专业网站营销,猫咪多用户wordpress今天我们继续复习Java相关的知识#xff0c;和大家分享有关内部类等方面的知识#xff0c;希望大家喜欢。 目录
内部类
成员内部类
编辑
静态内部类
局部内部类
匿名内部类
枚举类
定义方法
基本类型包装类
自动装箱和拆箱 内部类
成员内部类
成…今天我们继续复习Java相关的知识和大家分享有关内部类等方面的知识希望大家喜欢。 目录
内部类
成员内部类
编辑
静态内部类
局部内部类
匿名内部类
枚举类
定义方法
基本类型包装类
自动装箱和拆箱 内部类
成员内部类
成员内部类和成员变量和成员方法一样都是属于对象的也就是说我们必须存在外部对象才能创建内部类的对象。
public class PleaSure {class pleasure{public void display() {System.out.println(这是内部类的输出函数display);}}
}
public class Main {public static void main(String[] args) {// 首先创建外部类的一个实例PleaSure outer new PleaSure();// 然后使用外部类的实例来创建内部类的实例PleaSure.pleasure inner outer.new pleasure();// 调用内部类的方法inner.display();}} 静态内部类
静态内部类其实就和类中的静态变量和静态方法一样是属于类拥有的我们可以直接通过类名加上一个点去访问。
public class PleaSure {static class pleasure{public void display() {System.out.println(这是内部类的输出函数display);}}
}
public class Main {public static void main(String[] args) {PleaSure.pleasure inner new PleaSure.pleasure();// 调用内部类的方法inner.display();}} 局部内部类
局部内部类是Java中内部类的一种它定义在外部类的某个方法或代码块内部并且其作用域被限定在定义它的方法或代码块中可以类比局部变量来理解。
public class OuterClass { private int outerField 100;public void outerMethod(){ final int localVar 200; class LocalInnerClass { public void innerMethod() { System.out.println(Access outer field: outerField); System.out.println(Access local variable: localVar); } }LocalInnerClass localInner new LocalInnerClass(); localInner.innerMethod(); } public static void main(String[] args) { OuterClass outer new OuterClass(); outer.outerMethod(); }
}
匿名内部类
匿名内部类是Java中一种特殊的内部类形式它允许你声明和实例化一个类同时立即创建一个该类的实例而无需显式地给该类命名。匿名内部类通常用于实现接口或继承一个类特别是抽象类并立即在其定义时创建该类的实例。
public interface newpleasure {void sayHello();
}
public class Main {public static void main(String[] args) {newpleasure greeting new newpleasure() {Overridepublic void sayHello() {System.out.println(Hello, World!);}};greeting.sayHello();}
} 枚举类
枚举类在Java中是一种特殊的数据类型它提供了一种更强大、更安全和更易读的方式来定义一组固定的命名常量。枚举类是通过enum关键字来定义的它是一组固定的常量值的集合每个常量值代表一个特定的数据类型类中的实例数量是有限的且每个实例在编译时就已被确定不能动态创建新的实例。每个枚举常量在枚举类中都是唯一的且可以使用操作符进行比较。此外枚举类还提供了compareTo方法用于比较两个枚举常量的顺序。
定义方法
enum Season { SPRING, SUMMER, AUTUMN, WINTER
} enum DayOfWeek { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7); private int value; DayOfWeek(int value) { this.value value; } public int getValue() { return value; }
}
同样如果我们想要设置和得到其中的value等我们直接new并用万能的“点”调用get和set即可。
基本类型包装类
基本类型包装类将Java的八种基本数据类型byte、short、int、long、float、double、char、boolean封装为对象从而允许这些基本类型以对象的形式参与面向对象编程。 其中的对应关系如下 Byte对应基本类型byte。 Short对应基本类型short。 Integer对应基本类型int。 Long对应基本类型long。 Float对应基本类型float。 Double对应基本类型double。 Character对应基本类型char。 Boolean对应基本类型boolean。 private final int value;
public Integer(int value) {this.value value;
}
public static void main(String[] args) {Integer i 1;System.out.println(i i);
}
自动装箱和拆箱
接下来的知识点也是面试中可能常考的一个知识点那么为什么包装类型能直接使用一个具体值来赋值呢其实依靠的是自动装箱和拆箱机制。
Integer i 1; //其实这里只是简写了而已
Integer i Integer.valueOf(1); //编译后真正的样子
public static Integer valueOf(int i) {if (i IntegerCache.low i IntegerCache.high) //Java为了优化有一个缓存机制如果是在-128~127之间的数会直接使用已经缓存好的对象而不是再去创建新的面试常考return IntegerCache.cache[i (-IntegerCache.low)];return new Integer(i); //返回一个新创建好的对象
}
如果使用包装类来进行运算或是赋值给一个基本类型变量会进行自动拆箱。