JAVA学习9

Posted Zephyr丶J

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA学习9相关的知识,希望对你有一定的参考价值。

JAVA学习9

今天上午看了一上午论文,弄得好没激情,回去看了一会java书,然后睡觉,起来的时候问自己每天叫醒自己的是什么,突然不知道回答什么,是梦想吗

IDEA安装

idea的组织方式:
    project  ——>module
eclipse的组织方式:
    workspace ——>project
    
快速生成main方法:psvm
快速生成System.out.println(): sout
注意:IDEA是自动保存,不需要crtl+S
删除一行:crtl+y

左侧窗口中的列表怎么展开?怎么关闭?
    左箭头关闭;
    右箭头展开;
    上下箭头移动
idea中退出任何窗口,都可以使用esc键
任何新增/新建/添加:alt+insert
窗口变大/变小:crtl+shift+F12
切换java程序:从两个程序之间切换: alt+左箭头;alt+右箭头
运行:crtl+shift+F10
切换窗口:alt+标号
提示方法的参数:crtl+P
单行注释:crtl+/
多行注释:crtl+shift+/
idea中怎么定位方法/属性/变量?
    光标停到某个单词下面,这个单词可能是:方法名、变量名;停到单词下面,按crtl键,出现下划线,点击跳转
    
crtl+d直接复制一行
alt+回车 纠错
两次shift  弹出搜索框    
查看某一个类的属性和方法 alt+F12
crtl+点击单词  可以跳转到类或方法中
重命名 shift+F6

一次编辑多行:按住alt,下拉,然后编辑

idea自动编译,不需要手动编译

工程Project的根就是IDEA的默认当前路径。
ifn快捷键 = if (变量 == null) 

final

1.final是java语言中的一个关键字
2.final表示最终的,不可变的
3.final可以修饰变量以及方法,还有类等
4.final修饰的变量?
    final修饰的局部变量,一旦赋值不能重新赋值;final修饰的变量,只能赋一次值
5.final修饰的方法?
    final修饰的方法无法覆盖,无法重写
     final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。
     此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法,
     因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。(注:类的private方法会隐式地被指定为final方法。)

6.final修饰的类?
    final修饰的类无法继承
7.final修饰的变量,如果是一个引用会怎样?
    引用也是一个变量,final修饰的变量只能赋一次值
    该引用只能指向一个对象,并且它只能永远指向该对象,无法再指向其他对象。并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收器回收,直到当前方法结束后,才会释放空间。
    虽然final的引用指向对象A后,不能再重新指向对象B。但是对象A内部的数据可以更改。

8.final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值,这个手动赋值,在变量后面赋值可以,在构造方法中赋值也行
 final修饰一个成员变量(属性),必须要显示初始化。这里有两种初始化方式,一种是在变量声明的时候初始化;
 ******第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

回顾:实例变量在什么时候赋值?在构造方法执行的时候赋值,在创建对象的时候赋值
    系统赋默认值也是在构造方法执行的时候赋值,没有写构造方法的时候,默认有个无参构造,赋了默认值为0,
    所以final 修饰的实例变量没有赋值的时候会报错。因此用final修饰时,需要在系统赋默认值之前赋值
    
自测:(final修饰实例变量)如果同时有无参构造方法和有参构造方法,然后创建对象时调用有参构造方法赋值时,会报错,显示需要赋值;
这时可以取消无参构造,或者在无参构造中随便赋一个值(这个值不影响调用有参构造的赋值)

9.final 修饰的实例变量,一般添加static修饰(因为不能变),节省内存(static final int i=0)
存储在方法区

10. 终极结论:用static和final联合修饰的变量称为“常量”,常量名建议全部大写,每个单词之间用下划线连接
常量实际上和静态变量一样,区别在于:常量的值不能变
常量和静态变量都存储在方法区,并且都是在类加载时初始化
常量一般都是公开的(加public),因为常量改不了
例如:public static fianl double PI = 3.1415926;

抽象类

类和类之间有共同特征,将这些具有共同特征的类再进一步抽象形成了抽象类,由于类本身是不存在的,所以抽象类无法创建对象;
抽象类也可以再进一步抽象
类到对象是实例化,对象到类是抽象
类本身是不存在的,所以抽象类无法创建对象,或无法实例化,所以抽象类是用来被子类继承的(抽象类的子类也可以是抽象类)
final和abstract不能联合使用,这两个关键字是对立的,非法的修饰符组合

抽象类也属于引用数据类型

怎么定义?
    [修饰符列表] abstract class 类名{
        类体;
    }
    
抽象类虽然无法实例化,但是抽象类中有构造方法,这个构造方法是供子类使用的

抽象类关联到一个概念: 抽象方法,什么是抽象方法?
    抽象方法是没有实现的方法,没有方法体的方法。例如:
    public abstract void doSome();
        抽象方法的特点是:
            1.没有方法体,以分号结尾
            2.前面修饰符列表中有abstract关键字
            
抽象类中不一定有抽象方法,但是抽象方法必须出现在抽象类中

重要结论:一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。这里的覆盖或者重写,称为对抽象方法的实现;抽象类继承抽象类,不一定要覆盖或者重写抽象方法

判断:java语言中凡是没有方法体的方法都是抽象方法
    不对,错误的
    Object类中有很多方法都没有方法体, 都是以“;”结尾的,但他们都不是抽象方法;例如:
    public native int hashCode();
    这个方法底层调用了C++写的动态链接库程序
    前面修饰符列表里面没有:abstract。有一个native,表示调用JVM本地程序

以上是关于JAVA学习9的主要内容,如果未能解决你的问题,请参考以下文章

java SpringRetry学习的代码片段

超级有用的9个PHP代码片段

VSCode自定义代码片段9——JS中的面向对象编程

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

IOS开发-OC学习-常用功能代码片段整理