关于java:Java学习笔记-day1

49次阅读

共计 2699 个字符,预计需要花费 7 分钟才能阅读完成。

ps 是开博记录的 day1 其实曾经学了一小段时间 java 根底

static 关键字的应用

static 动态的
static 能够用来润饰:属性、办法、代码块、外部类
应用 static 润饰属性:动态变量 / 类变量。
3.1 属性,按是否应用 static 润饰,又分为动态属性 和非动态属性(实例变量)

实例变量:创立类的多个对象,每个对象都独立领有一套类中的非动态属性。当批改其中一个对象中的非动态属性时,不会导致其余对象中同样的属性值的批改。

动态变量:创立类的多个对象,每一个对象都共享同一个动态变量。当通过某一个对象批改动态变量时,会导致其余对象调用此动态变量时,是被批改过得。

3.2 static 润饰属性的其余阐明:

①动态变量随着类的加载而加载。能够通过“类. 动态变量”的形式进行调用
②动态变量的加载要早于对象的创立
③因为类只会加载一次,则动态变量在内存中也只会存在一份。存在在办法区的动态域中。④             类变量        实例变量

    类        yes                no

    对象       yes               yes

类变量 vs 实例变量的内存解析

4. 应用 static 润饰的办法:静态方法

① 随着类的加载而加载,能够通过 "类. 静态方法" 的形式进行调用

②             静态方法        非静态方法

    类        yes                no

    对象       yes               yes

③ 静态方法中,只能调用动态的办法或属性

    非静态方法中,既能够调用动态的也能够调用

    非动态的办法和属性


  1. static 留神点:

    在动态的办法内,不能应用 this、super 关键字

  1. 开发中如何确定一个属性是否要申明为 static?

属性是能够被多个对象共享的,不随着对象的不同而不同的
开发中如何确定一个办法是否要申明为 static?
操作动态属性的办法,通常设置为 static 的
工具类中的办法,习惯上申明为 static 的
eg: Math、Arrays、Collections

单例设计模式

要解决的问题

采取肯定的办法,保障在整个软件系统中,对某个类只能存在一个对象实例。

具体代码的实现:

饿汉式:


//1. 私化类的结构器

class Bank(){private Bank(){

}



//2. 外部创立类的对象

//4. 要求此对象也必须申明为动态的

private static Bank instance = new Bank();



//3. 提供公共的动态的办法,返回类的对象


public static Bank getInstance(){return instance;}

}

懒汉式


class Order{

//1. 私化类的结构器

private Order(){

//2. 申明以后类的对象,不初始化

//4. 此对象也必须申明为动态的



//3. 申明 public static 的返回以后类对象的办法

public static Order getInstance(){if(instance == null){instance = new Order();

    }

    return instance;

}

两种形式的比照

饿汉式:

害处:对象加载工夫过长

益处:饿汉式是线程平安的

懒汉式:

益处:提早对象的创立

目前写法的害处:线程不平安 —> 到多线程内容时再批改

main()办法的应用阐明

main() 办法作为程序的入口
main() 办法加上 static 也是一个一般的静态方法
main() 办法能够作为咱们与控制台交互的形式(之前,用 Scanner)

代码块

代码块的作用

初始化类、对象的信息

分类

代码块如果应用修饰符,只能用 static

动态代码块 vs 非动态代码块

实例化子类对象时,波及到子父类中动态代码块,非动态代码块,结构器的加载程序

由父及子,动态后行。

父类动态代码块 → 子类动态代码块 → 父类非动态代码块、结构器的执行 → 子类非动态代码块、结构器的执行

对属性可赋值的地位:

默认初始化
显示初始化
结构器中初始化
有了对象后,通过“对象. 属性”或“对象. 办法”的形式进行赋值
在代码块中赋值

执行的先后顺序 1 →2/5 → 3 → 4

final

能够用来润饰:

类、办法、变量(属性、局部变量)

具体的

final 用来润饰一个类:此类不能被其余类所继承

        比方:String System StringBuffer

final 用来润饰办法:此办法不能够被重写

        比方:Object 类中的 getClass();

final 用来润饰变量:此时“变量”就称为是一个常量

        ①润饰属性

        ②润饰局部变量

            尤其是应用 final 润饰形参时,表明此形参

            是一个常量。当调用此办法时,给常量形

            参赋一个实参,一旦赋值,就只能在办法体内应用此形参,但不能从新赋值。

static final 用来润饰属性:全局常量

抽象类 abstract 关键字

用来润饰 类和办法

abstract 用来润饰的类 称为 抽象类

此类不能实例化
抽象类中肯定有结构器,便于子类实例化时调用(波及:子类对象实例化的全过程)
开发中,都会提供抽象类的子类,让子类对象实例化,实现相干的操作

——> 形象的应用前提:继承性

abstract 润饰办法:形象办法

形象办法只有办法的申明,没有办法体
蕴含形象办法的类,肯定是一个抽象类。反之,抽象类中能够没有形象办法
若子类重写了父类中所有的形象办法后,此子类方可实例化

 若子类没有重写父类中所有的形象办法,则此子类也是一个抽象类,须要用 abstract 润饰


留神点

abstract 不能用来润饰属性、结构器等构造
也不能润饰 private 办法,static 办法,final 的办法,final 的类

模板办法设计模式

在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤曾经在父类中写好了。然而某些局部易变,易变局部能够形象进去,供不同的子类实现。这就是一种模板模式。

接口

概述

因为 java 不反对多重继承,有了接口,就能够失去多重继承的成果

接口应用 interface 来定义

Java 中,接口和类是两个并列的构造

一个类能够实现多个接口

如何定义接口:定义接口中的成员

JDK7 以前,只能定义全局常量和形象办法

全局常量:public static final 的 但书写时,能够省略

形象办法:public abstract 的

JDK8:除了定义全局常量和形象办法外,还能够定义静态方法、默认办法

接口中不能定义结构器的,意味着接口不能实例化

implements

Java 开发中,接口通过让类去实现(implements)的形式来应用

如果实现类笼罩了接口中所有的形象办法,则此实现类就能够实例化

如果实现类没笼罩接口中所有的形象办法,则此实现类仍未一个抽象类

Java 能够实现多个接口

补救了单继承性的局限性

格局:class AA extends BB implements CC,DD,EE

** 接口与接口之间能够继承,而且能够多继承

接口的具体应用,体现多态性

接口,实际上能够看做是一种标准

** 领会面向接口编程

外部类

Java 容许将一个类 A 申明在另一个类 B 中,则类 A 就是外部类,B 称为外部类

正文完
 0