最基础整理

1.面向对象和面向过程的理解:
  • 面向过程属于单个事情的操作,按照顺序一步一步的执行;
  • 面向对象属于对复杂事情的处理,比如说造汽车,就需要面向对象的思路去思考,需要玻璃,轮胎...等部件,然后这些部件怎么制作出来,就需要面向过程一步一步去思考了;
  • 面向对象和面向过程是相辅相成的!
2.对象演变过程的理解:

-数据无管理时代:比如只是做简单的加减乘除(或者是刚创业的公司,没有很明确的分工);
-数组管理和企业部门制:随着数据量的不断增多,会引起质变,比如我需要把某些参数放到一起,数组的概念随之出现;
-对象和企业项目制:这个可以理解为企业下有多个部门,分别做不同的业务,单独成立!

3.对象和类的理解:

对象是程序运行过程中通过类创建出来的;抽象类指的是把相同的,相似的属性或方法抽取出来,当做一个抽象类;

4.内存:

java虚拟机内存分为:栈(stack),堆(heap),方法区(method area),其实方法区也在堆里边
栈的特点如下:

  • 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口等)
  • JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)
  • 栈属于线程私有,不能实现线程间的共享!
  • 栈的存储特性是“先进后出,后进先出”(比如方法的嵌套调用,A方法里边调用B方法,那么A就会先创建一个栈帧,分配内存,然后是B,执行的时候先执行B,回收B,再执行A,回收A)
  • 栈是由系统自动分配,速度快!栈是一个连续的内存空间!
  • 方法执行完之后会自动删除分配的栈帧!
    堆的特点如下
  • 堆用于存储创建好的对象和数组(数组也是对象);
  • JVM只有一个堆,被所有的线程共享
  • 堆是一个不连续的内存空间,分配灵活,速度慢!
    方法区的特点如下:
  • JVM只有一个方法区,被所有线程共享!虚拟机启动时加载类信息!
  • 方法区实际也是堆,只是用于存储类,常量相关的信息!
  • 用来存储程序中永远不变或唯一的内容(类信息,class对象,静态变量,字符串常量等)
    this关键字为何不能用于静态方法中:
    拿图纸和汽车来说,你要造成汽车肯定需要图纸,但是你有图纸,却不一定会有汽车,图纸相当于是类信息,汽车就是对象
    image.png
5.参数传值机制

java中,方法中所有的参数都是“值传递”,也就是"传递的是值的副本"。也就是说我们得到的是“原参数的复印件,而不是原件”。因此,复印件的改变不会影响原件。
基本数据类型参数的传值:
传递的是值的副本,副本改变不会影响原件
引用类型参数的传值:
传递的是值的副本,但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。

6.静态初始化块和构造方法

A继承B,A和B里边都有静态代码块和构造方法;代码在执行的时候,静态代码块和构造方法都会先执行父类里边的代码,最后再执行子类里边的代码;(追溯过程:子类--父类--object);注意,默认子类在创建构造方法时,都会默认实现父类的构造方法,super...这也解释了上述的原因;

7.向上转型和向下转型的理解
  1. 先拿多态来说,什么是多态,多态指的是多种形态,比如动物的叫声,可以有猫叫,狗叫,鸟叫;继承和接口的实现其实都是多态的实现;在实际业务场景里边,对于向上转型和向下转型的使用也是一致的,大概描述举例:有动物类Animal,Dog继承了Animal,重写了叫声,也有自己特有的方法行为,比如看门;Cat也继承了Animal,重写了叫声;那么狗和猫向上转型后都是Animal类型,Animal a = new Cat();Animal b = new Dog();,都有叫声的方法,调用叫声方法时候,其实还是各自叫声方法的调用;狗此时还调用不了看门的方法,因为父类里边没有该方法;如果想要调用的话,需要再向下转型 Dog d = (Dog)b;转换成子类再调用;需要注意一个特殊的场景,Dog d = (Dog)a;a此时也可以向下转型成Dog,编译期不会报错,jvm在运行期才会判断具体是哪个类型实现;如果此时d调用看门方法时候,就会报错,因为其实质类型是猫,猫并没有看门的方法,运行期会被识别出来;
8.数组
  • 数组也是对象,里边的值可以看成对象的成员变量;
9.多继承

java中的类没有多继承,接口可以多继承;

public interface SingService extends DanceService,SleepService {
     int NUM =1;
     void sing();
}
public class Person implements SingService,DanceService,SleepService{

    @Override
    public void dance() {
        System.out.println("我会唱歌!");
    }

    @Override
    public void sing() {
        int aa = SingService.NUM;
        System.out.println("我会跳舞!");
    }

    @Override
    public void sleep() {
        System.out.println("睡觉!");
    }
}

接口实现多继承和子类实现多个接口,效果是一样的,都要重写接口所有的方法,类的继承,如果不是抽象方法的时候,可以不用重写,但是接口的继承里边都是抽象方法,所以都需要重写!
接口里边各自定义的变量,因为是静态常量,所以可以直接调用;名称相同的情况下,接口.NUM获取

10.接口

接口中的方法默认都是抽象方法,里边的变量默认都是final修饰的;

public interface AA{
  /** public static final**/int MAX_AGE = 9;
  /** public abstract **/void aa();
}
11.匿名内部类的理解

匿名内部类,一般用于接口,但是没有具体的实现;所以不需要名字,只使用一次那种;直接在使用的时候重写方法就行;

public class Test{
public static void bb(AA a){
a.aa();
}
public static void main(String args[]){
  Test.bb(new AA(){
@Override  
public void aa(){
    System.out.println("212111");
  }
})
}
interface AA{
void aa();
}
}

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

推荐阅读更多精彩内容

  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,054评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,222评论 0 2
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,650评论 0 11
  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 464评论 0 2
  • 初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战...
    go以恒阅读 925评论 0 6