猿学-java有什么用java基础技术总结

加载顺序

父类静态成员->父类静态代码块->

子类静态成员->子类静态代码块->

父类普通成员->父类代码块->父类构造函数->

子类普通成员->子类代码块->子类构造函数

只有类第一次加载的时候加载静态成员与代码块

面向对象的三大特性:封装、继承、多态

Java作为一种面向对象语言。支持以下基本概念:

类 对象 继承 静态 重载 多态 抽象 封装

对象是要研究的任何事物,类的实例

类是对象的模板,对一组有相同数据和相同操作的对象的定义

Java的方法重载:就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法

重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

extends 关键字

子类拥有父类非private的属性,方法。

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。

Java的继承是单继承

final 关键字

在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)

1.修饰类: 当用final修饰一个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

2.修饰方法: 把方法锁定,以防任何继承类修改它的含义;类的private方法会隐式地被指定为final方法。

3.修饰变量: 修饰变量是final用得最多的地方。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

static 关键字:

static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。

1)static方法:

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是在非静态成员方法中是可以访问静态成员方法/变量的

2)static变量: static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

3)static代码块: static关键字还有一个比较关键的作用就是用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次

多态存在的三个必要条件

要有继承;

要有重写;

父类引用指向子类对象。

多态的优点

消除类型之间的耦合关系

可替换性

可扩充性

接口性

灵活性

简化性

多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作

酒(Win)是父类,剑南春(JNC)、五粮液(WLY)、酒鬼酒(JGJ)是子类

Wine a = new JNC();

在这里我们这样理解,这里定义了一个Wine 类型的a,它指向JNC对象实例。由于JNC是继承与Wine,所以JNC可以自动向上转型为Wine,所以a是可以指向JNC实例对象的。这样做存在一个非常大的好处,在继承中我们知道子类是父类的扩展,它可以提供比父类更加强大的功能,如果我们定义了一个指向子类的父类引用类型,那么它除了能够引用父类的共性外,还可以使用子类强大的功能。

但是向上转型存在一些缺憾,那就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们。所以父类类型的引用可以调用父类中定义的所有属性和方法,对于只存在与子类中的方法和属性它就望尘莫及了.

若子类重写了父类中的某些方法,在调用该些方法的时候,必定使用子类中定义的这些方法

接口与抽象类的相同部分:

接口与抽象类都必须有子类实例化才可使用。

接口与抽象方法的子类都必须重写全部抽象方法

抽象方法必须为public或者protected

抽象类的使用原则如下:

抽象类使用extends继承,一个子类只能继承一个抽象类;

它可以有默认的方法实现(非抽象方法)

接口的使用原则如下:

接口使用implements关键字实现多个接口;

接口方法全都是抽象方法

封装就是将属性私有化,提供公有的方法访问私有属性。

通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。

由于取值方法和赋值方法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了大规模的修改,程序的可维护性增强。

封装的实现:修改属性的可见性来限制对属性的访问。为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。在赋值和取值方法中,加入对属性的存取的限制。

通过取模mod()方法计算出来的值都是非负数

通过%求余出来的数值,正数、负数、0都可以。

在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。

堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法

基数排序、冒泡排序、直接插入排序、归并排序是稳定的排序算法。

数组:

优点:使用方便 ,查询效率比链表高,内存为一连续的区域

缺点:大小固定,不适合动态存储,不方便动态添加

链表:

优点:可动态添加删除 大小可变

缺点:只能通过顺次指针访问,查询效率低

字符与字节有什么区别:

字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。

字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。字符是语义上的单位,它是有编码的,一个字符可能编码成1个2个甚至3个4个字节。这跟字符集编码有关系,英文字母和数字是单字节,但汉字这些自然语言中的字符是多字节的。

int 的范围:2 的-31 次方到 2的31次方-1, -2147483648~2147483647

你熟悉什么数据结构

线性表 : 1.数组实现 ArrayList 2.链表 LinkedList

栈与队列

树与二叉树 1.树 2.二叉树 3.二叉查找树(二叉排序树) 4.平衡二叉树(AVL树) 5.红黑树

b 树和 hash 应用场景

AVL树:Windows对进程地址空间的管理使用AVL树

红黑树:Map和Set都是红黑树实现的

B/B+树:数据库索引

==和equals区别;

==:在8种基本数据类型中,比较的数据的值是否相等

equals:在引用数据类型中,比较的是内存中首地址是否相等,由于new出来的对象在堆上开辟了两个独立的空间,地址也当然是不同的,所以返回false。诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

字段和属性的区别:

字段通常是在类中定义的类成员变量

属性实现了字段的封装,属性有get、set 方法来控制字段。

关键字continue、break和return的区别:

continue: 跳出本次循环继续下一次循环

break: 跳出循环体,继续执行循环外的函数体

return: 跳出整个函数体,函数体后面的部分不再执行

String,StringBuffer与StringBuilder的区别:

String: 字符串常量,String 是不可变的对象, 因此在每次对 String类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,速度会变的相当慢。

StringBuffer: 字符串变量,是线程安全的。对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。

StringBuilder: 字符串变量,是非线程安全的。和StringBuffer用法一样,但是非线程安全,速度较快。

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

推荐阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,650评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,788评论 0 10
  • 当风穿过树林时 我知道 我已经错过了你 都说陪伴是最长情的告白 而我不愿陪伴 只愿你的一眼万年 时光匆匆 你也匆匆...
    风与阅读 284评论 2 4