Java学习回忆录-基础理论-010

61 篇文章 0 订阅
48 篇文章 1 订阅

Java学习回忆录-基础理论-010

有关Random类的问题

1. 在 Random 中,nextdouble方法没有参数,它所形成的随机数是在0.0到1.0 之间,
e.g.:
    0.7522897717363257      0.4008497619789346
    0.18415833785621571     0.5114614853027969
    0.10363322833807531     0.5971543724125803
    0.2298510047039578      0.7846149737270781
    0.5134294882743867      0.4669089760027143
2. 
    如果需要在指定的区间比如 10 到 20 之间生成随机数,可以先生成 0 ~ 10 之间的随机数,然后在加上 10。 

final关键字

概述:表示最终的意思,可以修饰变量,但是被它修饰的变量其实是一个常量,只能赋值一次
理解:可以像C里面的一样,定义常量变量,用来代替某些常出现的数值

final int NUM = 20; // 举例
1. final 修饰方法

父类不希望子类去重写他的部分方法,可以将这类方法使用final 修饰. 这样的话,子类只能继承,而不能重写. (子类只能用,不能修改)

举例:
设计一个父类,具备吃,喝的行为.
设计一个子类,子类继承父类。子类中没有定义特有的属性和行为, 是直接继承了父类的吃和喝的行为。

问题:
时代在变,子类继承的父类的吃和喝的行为,不满足子类的要求了。子类希望重写父类的吃和喝的行为。
解决问题:
子类通过重写特性(Override) 重写了父类的吃和喝的行为.
新的问题
父类发现,子类重写后,对父类的行为改动太大,父类不希望子类去修改,仅仅希望子类继承就可以了…
解决问题:
父类不希望子类去重写他的部分方法,可以将这类方法使用final 修饰. 这样的话,子类只能继承,而不能重写. (子类只能用,不能修改)
总结:
一个方法被final 修饰,特点: 该方法不能被子类重写(子类不能改了),子类只能用.

​2. final 修饰类

最终类, 继承体系到此终结
父类发现子类总是会重写他的方法. 很累, 父类干脆不希望子类再继承他了… 这样话,子类无法继承,子类也就不再能够重写父类的方法了… (断绝关系)
需求: 定义的一个类,不再希望被继承.
解决: 使用final 修饰类.
总结: 一个类被final 修饰,该类不能有子类(无法被继承),但是这个类虽然被final 修饰了,不能有子类, 自己还是可以创建对象的…

3. final可以修饰成员变量

​ final 修饰的成员变量,变为了常量,这样的常量,一旦声明并初始化好,就无法修改了…
​ final修饰的成员变量在初始化的时候必须要赋值,否则会报错。(其实想一下,如果不赋值,之后又不能修改,那这个常量就没有意义了)

static关键字

1. static变量

静态变量.
语法:

static 数据类型  变量名 =;

static int accountnum = 0;    // 举例

被static 修饰的成员变量,称之为静态变量.
**特点: **

1. 随着类的加载而加载,存在于方法区
   跟之前的普通的非static 修饰的成员变量,是不一样. 需要等着对象的创建,才会在堆内粗中初始化. 
2. 独立于对象存在.
   类已加载,静态变量就初始化,不依赖于对象. 不需要创建对象.就可以使用. 
3. 可以被所有对象所共享
    类只加载一次, 随着类的加载而出现的静态变量,在内存中也只有1个. 
    很重要,内存中只有1份,在方法区)
4. 可以直接通过类名来访问(类名.成员变量) 
    这种成员变量是静态的, 不依赖于对象,访问这些静态变量时,不用再创建对象来访问(简单)
2. static 方法.

被static 修饰的方法,称之为静态方法.
特点:

可以直接通过类名来调用. 
不依赖于对象.

注意:

1. 静态方法,只能访问静态(静态变量,静态方法)不能访问非静态的内容. 
2. 静态方法中可以直接调用静态属性,但是静态方法中没有this关键字(静态方法中,不能出现this和super)。
   因为没有被static修饰的属性是随着对象的创建而存在,而只有在创建对象的时候才会有this关键字,并且this 表示的是一个对象的引用(地址). 静态方法的执行不依赖于对象的. 可以直接通过类名来调用。所以静态方法中没有this关键字

static(静态)的弊端

在一个类中声明了非静态成员变量、静态成员变量、非静态成员方法、静态成员方法。
1. 在非静态的成员方法中.尝试去访问:
    静态变量       ok
	非静态成员变量  ok
	静态成员方法    ok
	非静态成员方法  ok 
	总结:在非静态的成员方法中,既可以访问静态的,也可以访问非静态的内容. 
	原因: 非静态的成员方法, 依赖于对象才能执行, 创建了对象,通过对象来调用的. 对象都创建了,类必然早就加载了. 都可以访问到. 
	
2. 在静态的方法中,尝试去访问:
	非静态成员变量  no
	非静态成员方法  no 
	静态变量 ok
	静态方法 ok .
	总结: 在静态方法中,只能访问静态的内容(静态变量,静态方法)
	原因: 静态的方法,随着类的记载,就可以调用,只要类加载完毕,就可以通过类名.静态方法的形式调用,不依赖于对象. 
	
总结:	
不能访问那些需要对象的 非静态变量和非静态方法... 
即早出现->不能访问晚出现... 
类:早  -> 只要被类加载器(系统)加载进内存,就存在了. 
对象:晚 -> 创建对象 new 才出来

静态的应用场景:

设计工具类. 
数组操作数组的... 
基本应用中.
举例:设计一个工具类
工具类,没有必要创建对象,会将工具类中的属性和方法都使用static 修饰. 
1. 定义一个类
2. 将这个类的构造方法私有
3. 设计方法
	例如: 操作数组的工具类.在类中编写,操作数组一些核心方法. 
4. 使用工具类:类名.方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值