美文网首页
基础知识一

基础知识一

作者: li_荔枝 | 来源:发表于2019-08-02 16:21 被阅读0次

一、抽象类与接口

抽象类

特点: 

1.抽象类中可以构造方法 

2.抽象类中可以存在普通属性,方法,静态属性和方法。 

3.抽象类中可以存在抽象方法。 

4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。

5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。

6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰

关键字使用注意:

抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。

接口

1.在接口中只有方法的声明,没有方法体。

2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final

3.在接口中的方法,永远都被public来修饰。

4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类)

5.接口可以实现多继承

6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。

7,接口可以继承接口,用extends。

二、 java里的静态变量是放在了堆内存还是栈内存?

堆区: 

1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 

2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 

栈区: 

1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 

2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 

3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 

方法区: 

1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

3.运行时常量池

常量池:

1.常量池中包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值。

1.1 这些类是Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型的包装类则没有实现。另 外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127时才可使用对象池,也即对象不负 责创建和管理大于127的这些类的对象。大于127的对象存放在堆中。

1.2 String类也实现了常量池技术

2.常量池还包含一些以文本形式出现的符号引用,比如:

2.1 类和接口的全限定名;

2.2 字段的名称和描述符;

2.3 方法和名称和描述符。

三、&,| 与&&,||

1.对于&

String s = null;看下面一段代码

if( (s!=null) & (s.length()>0) ) // String s = null;没有给s开辟空间,s.length()报NullPointerException没有指向的错误

2.对于&&

String s = null;

if( (s!=null) && (s.length()>0) )//&&和|| 是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了

      位移运算符:&和| 运算符应用于布尔值,得到的结果也是布尔值,不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。

四、内部类

1. 静态内部类:

    1). 静态内部类本身可以访问外部的静态资源,包括静态私有资源。但是不能访问非静态资源,可以不依赖外部类实例而实例化。

2. 成员内部类:

    1). 成员内部类本身可以访问外部的所有资源,但是自身不能定义静态资源,因为其实例化本身就还依赖着外部类。

3. 局部内部类:

    1). 局部内部类就像一个局部方法,不能被访问修饰符修饰,也不能被static修饰。

    2). 局部内部类只能访问所在代码块或者方法中被定义为final的局部变量。

4. 匿名内部类:

    1). 没有类名的内部类,不能使用class,extends和implements,没有构造方法。

    2). 多用于GUI中的事件处理。

    3). 不能定义静态资源

    4). 只能创建一个匿名内部类实例。

    5). 一个匿名内部类一定是在new后面的,这个匿名类必须继承一个父类或者实现一个接口。

    6). 匿名内部类是局部内部类的特殊形式,所以局部内部类的所有限制对匿名内部类也有效

五、final

final 修饰符

final 变量:

final 变量能被显式地初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象。但是 final 对象里的数据可以被改变。也就是说 final 对象的引用不能改变,但是里面的值可以改变。

final 修饰符通常和 static 修饰符一起使用来创建类常量。

final 方法:

类中的 final 方法可以被子类继承,但是不能被子类修改。

声明 final 方法的主要目的是防止该方法的内容被修改。

如下所示,使用 final 修饰符声明方法。

final 类:

final 类不能被继承,没有类能够继承 final 类的任何特性。

值传递引用传递:https://www.zhihu.com/question/31203609?sort=created

六、变量初始化

1. 类的初始化顺序:父类静态变量 --> 父类静态代码块 --> 子类静态变量 --> 子类静态代码块 -->      父类非静态变量 --> 父类非静态代码块 --> 父类构造方法 --> 子类非静态变量 --> 子类非静态代码块 --> 子类构造方法。

2. 全局变量不初始化有默认值,局部变量必须初始化后才能使用,否则编译错误。

相关文章

  • 音频基础知识02

     音频基础知识 01  音频基础知识 02  音频基础知识 03  音频基础知识 04 人类收集声音的历史   为...

  • angular笔记

    第一部分、基础知识--------------------------基础知识------------------...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • PHP全栈学习笔记18

    php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与...

  • Python3基础知识

    Python3基础知识 | 基础语法 Python3基础知识 | 编程第一步 Python3基础知识 | 基本数据...

  • C语言回顾

    基础知识 控制流 基础知识补充 其他主题

  • PHP面试知识脉络(更新中)

    PHP基础知识Javascript、jQuery、ajax基础知识Linux基础知识MySQL数据库的基础与优化程...

  • p2p理财基础知识

    p2p理财基础知识 p2p理财基础知识 p2p理财基础知识

  • 2018最新Java面试题

    一.基础知识篇 1.1 Java基础知识篇 final, finally, finalize 的区别 final修...

  • Java锁---偏向锁、轻量级锁、自旋锁、重量级锁

    理解锁的基础知识 如果想要透彻的理解java锁的来龙去脉,需要先了解以下基础知识。 基础知识之一:锁的类型 公平锁...

网友评论

      本文标题:基础知识一

      本文链接:https://www.haomeiwen.com/subject/rgqvhctx.html