static

static class in java

蹲街弑〆低调 提交于 2020-02-02 11:47:06
问题 How do I declare a static class in java? eclipse wants me to remove "static" from the declaration. static public class Constants { 回答1: First to answer your question: Only a Nested class can be declared static. A top level class cannot declared be static. Secondly, Inner class is a nested class that is not explicitly declared static. See the java language spec. So contrary to some answers here, Inner classes cannot be static To quote an example from the spec: class HasStatic{ static int j =

static class in java

别等时光非礼了梦想. 提交于 2020-02-02 11:45:16
问题 How do I declare a static class in java? eclipse wants me to remove "static" from the declaration. static public class Constants { 回答1: First to answer your question: Only a Nested class can be declared static. A top level class cannot declared be static. Secondly, Inner class is a nested class that is not explicitly declared static. See the java language spec. So contrary to some answers here, Inner classes cannot be static To quote an example from the spec: class HasStatic{ static int j =

static class in java

别来无恙 提交于 2020-02-02 11:45:16
问题 How do I declare a static class in java? eclipse wants me to remove "static" from the declaration. static public class Constants { 回答1: First to answer your question: Only a Nested class can be declared static. A top level class cannot declared be static. Secondly, Inner class is a nested class that is not explicitly declared static. See the java language spec. So contrary to some answers here, Inner classes cannot be static To quote an example from the spec: class HasStatic{ static int j =

Java静态内部类详解

你离开我真会死。 提交于 2020-02-02 03:57:11
1. 什么情况下可以使用静态的类? 使用静态的类的只有一种情况,就是在内部类中。如果是在外部类中使用static关键字是会报错的。 2.静态内部类的使用条件限制 1静态的内部类中不能访问外部类中非静态的变量和方法。 class Outer { public String name = "什么神奇" ; private int age ; public void fun ( ) { System . out . println ( "我靠" ) ; } public static class Inner { public void fun2 ( ) { fun ( ) ; //报错 System . out . println ( name ) ; //报错 } } } 再来对比普通内部类的使用 class Outer { public static String name = "什么神奇" ; private int age ; public static void fun ( ) { System . out . println ( "我靠" ) ; } public class Inner { public void fun2 ( ) { fun ( ) ; System . out . println ( name ) ; } } } 证明了一点

How do I declare a static mutable variable without assignment?

 ̄綄美尐妖づ 提交于 2020-02-02 00:24:48
问题 I tried the following struct mbuf { cacheline: *mut [u64], // great amount of rows follows below // .......... } static mut arr: [mbuf; 32]; // Q1 my main aim // something as before but using Vec; // Q2 also main aim fn main() { // let static mut arr: [mbuf; 32]; // Q3 also doesn't work // static mut arr: [mbuf; 32]; // Q3 also doesn't work } and got error src/main.rs:74:29: 74:30 error: expected one of `+` or `=`, found `;` src/main.rs:74 static mut arr: [mbuf; 32]; ^ Q1,Q2,Q3 - Is it

Java类加载全过程

烂漫一生 提交于 2020-02-01 22:42:52
类加载全过程这个基础章节的博客也是很早之前就想做个总结的了,直奔主题 (1)加载 加载JAVA编译阶段后产生.class文件,里面有各种表,各种属性和方法描述。所以第一步进行的加载阶段,就是通过一个C++的instanceKlass加载器读取.class字节码文件,并且在元空间(方法区)生成一个.class类对象,它加载时会产生一个_JAVA_MIRROR镜像对象放在堆中。 (2)验证 校验类的字节码文件是否符合JVM虚拟机规范,比如检查头部的Cafe Babe 魔数。 (3)准备 准备阶段就是给static 静态变量分配内存空间,设置默认值,在初始化阶段才附值。 如果是static final +基本类型(int,long…) ,准备阶段分配空间同时附值。因为基本类型静态常量在编译期已经确定值,省去了初始化附值多此一举操作。 如果是static final +基本引用类型(对象,数组),则分配空间,不附值。因为new创建对象和附值操作都必须是在加载完成初始化阶段后。 (4)解析 将常量池(.class里面那个constant pool )中的符号引用(一个方法,类,属性的描述)转化成为直接引用(方法,类,属性值在内存中的真是地址,一般长“@1024a129493b11001c”大概这个样子)。 (5)初始化 调用生成的构造方法(< init >()v)对该加载的类进行初始化

Java多态之Father f=new Son();

女生的网名这么多〃 提交于 2020-02-01 22:12:56
成员变量静态方法看左边,非静态方法编译看左边,运行看右边。 左边Father f其实是定义了一个Father类的对象,而右边new Son()可以只理解为是一个重写了Father类方法的对象。 因此,f的成员变量,静态方法都是Father类的,而只有被重写的方法才是调用Son类的。 所以编译看左边指的是如果调用Son类的特有方法的话会编译错误,因为这个 被重写的Father类 里并没有这个Son类的特有方法。 class Father{ int a=1; static int b=2; void say(){ System.out.println("I am father"); } void ffun(){ System.out.println("father's function"); } static void fun(){ System.out.println("static father"); } } class Son extends Father{ int a=3; static int b=4; void say(){ System.out.println("I am son"); } void sfun(){ System.out.println("son's function"); } static void fun(){ System.out.println(

关于java中的继承

Deadly 提交于 2020-02-01 17:08:55
我们都知道Java中的继承是复用代码、扩展子类的一种方式,继承使得Java中重复的代码能够被提取出来供子类共用,对于Java程序的性能以及修改和扩展有很大的意义,所以这是一个非常重要的知识点。 那么对于继承的知识点,你真的都了解了吗? 首先,我们都知道子类继承父类,就能直接访问父类的公共属性以及受保护属性(public和protected),同时也能直接访问父类的公共方法以及受保护方法;其次,对于父类的私有属性,子类并不能直接访问,但是可以通过父类提供的getter和setter方法进行访问,而父类的私有方法,子类无法直接访问;还有,对于父类的包访问权限属性和方法(default),如果子类和父类在同一个包下,子类可以继承并且直接访问到,如果二者不在同一个包下,则子类无法直接访问到这些方法和属性,但是同样的可以通过父类的getter和setter方法去访问这些属性;最后一点,我们很多人其实都有疑问,子类继承父类,不是应该继承了父类的所有东西吗,为什么访问不到那些私有属性?其实这里要从内存分析来看,当我们要创建一个子类的对象时,Java虚拟机会先帮我们生成对应的父类对象,因为我们都知道,在子类的构造方法中中,首行代码必须是父类构造方法的调用,即通过super关键字来调用,如果不写,则虚拟机会自动帮我们加入super()(前提是父类有无参构造方法)

计算机语言之java基础知识二

不想你离开。 提交于 2020-02-01 16:17:20
语法糖 问:Java 中语法糖原理、解语法糖? 答: 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法。语法糖的存在主要是方便开发人员使用。但其实,Java 虚拟机并不支持这些语法糖,这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。Java 中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。 语法糖:switch 支持 String 与枚举、泛型、自动装箱与拆箱、方法变长参数、枚举、内部类、条件编译、 断言、数值字面量、for-each、try-with- 问:resource、Lambda 表达式? 答:从 Java 7 开始,Java 语言中的语法糖在逐渐丰富,其中一个比较重要的就是 Java 7 中switch开始支持String。泛型需要在编译阶段通过类型擦除的方式进行解语法糖,虚拟机中没有泛型,只有普通类和普通方法,所有泛型类的类型参数在编译时都会被擦除,泛型类并没有自己独有的Class类对象。比如并不存在List<String>.class或是List<Integer>.class,而只有List.class。枚举类型不能被继承。内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念。 static 问:”static

第九节 方法

老子叫甜甜 提交于 2020-02-01 06:16:55
方法 方法的定义格式 方法是若干语句的功能结合。 参数:进入方法的数据。 返回值:从方法中出来的数据。 定义方法的完整格式: //参数如果有多个 使用逗号进行分隔 修饰符 返回值类型 方法名称 (参数类型 参数名称, . . . ) { 方法体 return 返回值 ; } 修饰符:现阶段的固定写法:public static。 返回值类型:方法最终产生的数据结果是什么类型。 方法名称:方法的名字,规则和变量一样,小驼峰。 参数类型:进入方法的数据类型。 参数名称:进入方法的数据对应的变量名称。 方法体:方法需要做的事情,若干行代码。 return:两个作用 停止当前方法 将后面的返回值还给调用处 返回值:方法执行后最终产生的数据结果。 方法调用格式 方法的三种调用格式 单独调用:方法名称(参数); 打印调用:System.out.println(方法名称(参数)); 赋值调用:数据类型 变量名称 = 方法名称(参数); 注意:返回值类型固定写为void的方法只能单独调用,不能进行打印调用。 public class Method { public static void main ( String [ ] args ) { //单独调用 sum ( 10 , 20 ) ; System . out . println ( "============================