Java(基本概念)

最近花了一周左右重新回顾了Java基础,深感路漫漫其修远兮,在此把个人认为有价值的点列出来,希望能加深记忆

1.Java运行机制

JAVA

2.标识符命名规范

  • 见名知意
  • 类名、接口名:驼峰法(HelloWorld)
  • 变量名、方法名:首字母小写,后面每个单词首字母大写
  • 常量名:全部字母大写

3.数据类型

基本数据类型:byte short int long char boolean float double
引用类型:如String

基本类型转换(除Boolean):

  • 自动转换:容量小 >>> 容量大
    byte<short(char)<int<long<float<double

  • 强制转换:容量大 >>> 容量小(可能缺失精度)

  • 默认int类型为赋值的字面值类型
    当整数字面值没有超出byte、short、char取值范围时,可直接赋值

  • 多种数据类型混合运算,先转换成容量最大的那种数据类型再做运算


4.运算符

^(异或) 两边只要不一样,结果为true

&&(短路与) 效率更高(推荐)

ll(短路或) 效率更高(推荐)


5.控制语句

switch()括号中的类型只能为int或String(byte short char可自转int)


6.方法

  • 内存结构
JVM

堆内存和方法区内存各有一个。一个线程一个栈内存

栈内存(Stack):存储方法体中的局部变量

堆内存(Heap):存储new创建的对象

方法区内存:存储代码片段、静态变量

  • 重载

同一个类中,方法名相同,参数列表不同,构成重载

  • 递归(调用自身)
public static int sum(int n){
        if(n==1){
            return 1;
        }
        return n*sum(n-1);
    }

7.面向对象

  • 封装(属性加上private,通过settergetter方法 访问)
  • 继承 (子类继承父类除构造函数以外的所有数据,是方法覆盖与多态机制的前提)
  • 多态 (关键是理解Java程序有编译期与运行期两个阶段)

8.发生方法覆盖(override/overwrite)的条件

  • 发生在具有继承关系的两个类之间
  • 相同的方法名、返回值类型、参数列表,只有方法体不同
  • 重写的方法不能比被重写的方法拥有更低的访问权限
  • 重写的方法不能比被重写的方法抛出更宽泛的异常
  • 私有方法不能被覆盖、静态方法不需要覆盖、构造方法不存在覆盖
  • 覆盖和成员变量无关

9.static关键字

  • 静态变量:当所有对象都有这个属性、并且这个属性对应的值都是一样的,这时声明为静态变量
    静态变量在类加载时初始化,并且只初始化一次
  • 静态方法:一般工具类采用静态方法,方便调用
  • 静态代码块:static{},在类加载时执行。{}实例语句块,在构造方法调用之前执行

10.super关键字

定义:super指的是当前子类中的父类型特征

JVM

构造方法中的this与super:

  • this:构造方法调用构造方法
  • super:通过子类构造方法调用父类构造方法

语法规则:一个构造方法第一行如果没有this(...)也没有显式去调用super(...),系统会默认第一行调用super()
this与super的使用都是建立在对象的基础上,而static方法没有对象,所以不能用于static方法中


11.final关键字

final代表最终的、不可更改的

final修饰的变量一旦赋值不可改变

final修饰的方法无法被覆盖

final修饰的类无法被继承


12.抽象类(abstract)

语法规则:

  • 无法被实例化
  • 虽然无法实例化,但抽象类也有构造方法,是用于子类调用的
  • 在抽象类中可定义抽象方法,抽象方法没有方法体
  • 一个非抽象类继承抽象类,必须将父类中的抽象方法覆盖

13.接口(interface)

语法规则:

  • 接口中只能出现常量(public static final)、抽象方法(public abstract),括号内容可直接省略
  • 一个类可以实现多个接口
  • 接口与接口之间,可多继承
  • 一个非抽象类实现接口,必须将接口中所有方法实现(implements)

接口的作用:

  • 可以使项目分层,所有层都面向接口开发,提升开发效率
  • 接口使代码之间的耦合度降低,变得“可插拔”

For Example:

从以下代码可以发现,ServiceImpl与Test面向接口编程,互相分离

Engine.java(Service)

public interface Engine {
    void start();
}

Honda.java/YAMAHA.java/.....(ServiceImpl)

public class Honda implements Engine {
    @Override
    public void start() {
        System.out.println("Honda!!!");
    }
}

public class YAMAHA implements Engine {
    @Override
    public void start() {
        System.out.println("YAMAHA!!!!!");
    }
}

Car.java(Test)

public class Car {
    private Engine e;

    public Car(Engine e){
        this.e=e;
    }

    public void drive(){
        e.start();
    }
}

14.异常(Exception)

语法规则:

  • throws(抛出异常,跟在方法名后),将异常推卸给上层
  • try(可能会抛出异常的代码)...catch(具体异常)...finally(必定执行的代码),将异常捕捉并解决
  • getMessage()返回异常关键信息,printStackTrace()返回异常的详细信息

For Example:自定义异常与手动抛出异常

IllegalText.java(自定义异常类)

public class IllegalText extends Exception {
    //定义异常一般提供两个构造方法
    public IllegalText(){}
    public IllegalText(String msg){
        super(msg);
    }
}

CustomService.java(相关业务类)

public class CustomService {
    public void register(String name) throws IllegalText{
        if(name.length()<6){
            IllegalText e = new IllegalText("长度底于6!");
            throw e;
        }
        System.out.println("格式通过!");
    }
}

Test.java(测试类)

public class Test {
    public static void main(String[] args) {
        String name="jack";
        CustomService cs=new CustomService();
        try{
        cs.register(name);
        }catch(IllegalText e){
            System.out.println(e.getMessage());
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • DAY 01 JAVA简述 Java是由SUN公司在1995年推出的一门高级编程语言,是现今服务器端的首选编程语言...
    周书达阅读 892评论 0 0
  • 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型(byte、short、int、long) c...
    Jasonme阅读 1,061评论 0 4
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,360评论 0 4
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,584评论 4 12
  • 第6章类文件结构 6.1 概述 6.2 无关性基石 6.3 Class类文件的结构 java虚拟机不和包括java...
    kennethan阅读 905评论 0 2