Java基础-01

java内存分为5个部分:
1、栈(Stack):存放的都是方法中的局部变量,方法的运行一定要在栈中

2、堆(Heap):凡是new出来的东西都在堆当中。
堆内存里的数据都有默认值和地址值

3、方法区:存储.class相关信息,包含方法的信息
静态数据(类名访问静态成员变量,其值和new的对象无关,只与类有关)

4、本地方法栈:与操作系统有关

5、寄存器:与CPU有关

匿名对象只能使用一次:确定一个对象只使用一次,可以使用匿名对象

字符串常量池(堆中):在程序中直接写上双引号的字符串,就在字符串常量池中

随机 Random r = new Random()
r.nextInt(100) 左闭右开[0,100)

静态代码块:
特点:当第一个执行本类时,静态代码块执行唯一一次
静态内容总是优先于构造方法
static{
}

面对对象三大特征:封装,继承,多态
封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。对数据和方法实现进行隐藏和保护

继承:(多态的前提)是指可以让某个类型的对象获得另一个类型的对象的属性的方法。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
extends
(单继承,多级继承(java.lang.object原始父类),多子类)

构造方法上,先调用父类构造方法,在调用子类
1、子类构造方法默认隐含一个super() 调用父类构造方法
2、super(参数) 可以调用重载父类构造方法
3、super的父类构造调用,必须是子类构造方法的第一语句,而且只能调用一个super

super关键字三种用法:
1、在子类成员方法中,访问父类的成员变量 super.name
2、在子类成员方法中,访问父类的成员方法 super.method()
3、在子类成员方法中,访问父类的构造方法 super()

this关键字(访问本类内容):
1、this.name 访问本类中的成员变量
2、this.method() 访问本类的另一个成员方法
3、在本类构造方法中访问本类另一个构造方法 构造方法的本类调用this(name)
也必须是子类构造方法的第一语句

抽象:如果父类中方法不确定如何进行实现,可以只定义不实现,就为抽象方法 abstract
抽象类,抽象方法所在的类为抽象类,在class之前写上abstract
抽象类里可以有抽象方法和普通方法
1、不能直接创建new抽象对象
2、必须用一个子类继承父类
3、子类必须覆盖重写,父类里的所有抽象方法

抽象类可以不包含抽象方法,抽象方法所在类必须是抽象类

接口(interface)引用类型:是一种公共的规范接口
包含
1、常量 public static final 可以省略,不写也是常量 必须进行赋值
2、抽象方法 接口中的抽象方法,修饰符必须是两个固定的关键字 public abstract
省略性写法:public method() abstract method() method( ) 全是抽象方法
java8
3、默认方法 public default method(){} 可以实现方法 解决接口升级问题
4、静态方法 public static method(){} 可以实现方法 与对象无关只与接口相关
不能通过接口实现类对象来调用接口的静态方法,可以直接通过接口名称调用
java9
5、私有方法 抽取公共方法,来解决多个默认方法之间重复代码问题,但又不能让实现类使用,所以私有化
1、普通私有方法 private method(){}
2、静态使用方法 private static method(){}

接口必须通过实现类实现 implements (多实现),接口之间是多继承的
1、接口是没有静态代码块或者构造函数的
2、抽象方法是单继承,接口可以继承多个
3、如果继承多个接口,有相同抽象方法,只需覆盖重写一次即可
4、要覆盖重写接口里所有的抽象方法,否则所在类必须是抽象类abstract
5、如果实现的多接口,有重复的默认方法,必须对默认方法进行覆盖重写
6、当父类与接口默认方法产生冲突,优先使用父类的方法

多态:就是指一个类实例的相同方法在不同情形有不同表现形式
多态性的体现:父类引用指向子类应用 父类名称 对象名 = new 子类名称
编译看左,运行看左
访问成员变量:
1、通过对象名访问成员变量:看等号左边是谁,优先用谁,没有向上查找(父类成员变量)
2、通过成员方法访问成员变量:该方法属于谁,优先用谁
编译看左,运行看右(成员变量不在此)
访问成员方法:父子都有先用子,没有向上查找

对象向上转型:(就是多态写法)
右侧创建一个子对象,把他当父类看待,向上转型一定是安全的,从小范围转向大范围
Animal cat = new Cat() int-->double
一但对象向上转型为父类,就无法调用子类原有的特定内容

对象向下转型【还原】:
子类名称 对象名 = (子类名称)父类对象
Cat cat1 = (Cat)cat
存在错误转型风险,编译不报错,运行异常 类似于 int num = (int)10.5
转型前进行判断
instanceof判断前面的对象能不能当做后面类型的实例
对象 instanceof 类名称

final:(修饰类,方法,局部变量,成员变量)
修饰类:该类不能有任何子类,final不能作为父类,其类方法不能进行覆盖重写
修饰方法:该方法为最终方法,不能被重写(abstract和final不能同时使用,矛盾)
局部变量:只能唯一一次赋值,数据不可改变 基本类型不可变,引用类型其地址不可变(值可以变化)
成员变量:成员变量有默认值,使用final后必须手动赋值 使用final要么直接赋值,要么通过构造方法赋值(所有构造方法都有对其进行赋值)

权限修饰符:
public》protected》(default)》private
同一类 yes yes yes yes
同一个包 yes yes yes no
不同包子类 yes yes no no
不同包非子类 yes no no no

内部类:一个类内部包含另一个类(汽车和发动机)
成员内部类:


成员内部类

内用外,随意访问;外用内,需要内部对象
使用成员内部类方法:
1、间接:通过外部类的对象,调用外部类的方法,里面在间接使用内部类方法
2、直接:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
成员内部类调用同名的外部类成员变量使用 外部类名称.this.name

局部内部类:一个类定义在一个方法内部,为局部内部类,只有当前方法可以使用它


局部内部类

局部内部类访问所在方法的变量,这个变量必须是final java8开始可以省略final,但变量值不能变


变量必须是final

类的权限修饰符:public》protected》(default)》private
1、外部类:public /(default)
2、成员内部类 : public / protected /(default)/ private
3、局部内部类:什么都不能写

匿名内部类(重要):可以不创建一个类实现接口,直接new 时进行方法重写


匿名内部类

1、匿名内部类在创建对象时只能使用一次(想多次使用,需要使用实现类)

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

推荐阅读更多精彩内容

  • 1.常见代码块的应用 *** a:局部代码块* 在方法中出现;限定变量生命周期,及早释放,提高内存利用率* b:构...
    Mr_董阅读 228评论 0 0
  • 一 封装 概念:是指隐藏对象的属性和实现细节, 仅对外提供访问的方式 好处:讲变化隔离;便于使用;提高重用性;安全...
    fordring2008阅读 169评论 0 0
  • 前言: 正所谓万丈高楼平地起,有了扎实的基础才能进阶更深奥的课程,才能让你后面的走得更轻松,学Java亦是如此!所...
    贪挽懒月阅读 707评论 1 11
  • 题目的基本顺序是: 基本语法 类相关的语法 内部类的语法 继承相关的语法 异常的语法 线程的语法 集合的语法 io...
    风平浪静如码阅读 468评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,492评论 16 22