黑马程序员 java基础要点整理

------- android培训java培训、期待与您交流! ----------

1

三元运算符:

 if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;

好处:可以简化if else代码。

弊端:因为是一个运算符,所以运算完必须要有一个结果。

2

转义字符:通过\ 来转变后面字母或者符号的含义。

\n:换行。

\b:退格。相当于backspace。

\r:按下回车键。window系统,回车符是由两个字符来表示\r\n.

\t:制表符。相当于tab键。

3

逻辑运算符用于连接boolean类型的表达式。

true & true = true;

true & false = false;

false & true = false;

false & false = false

只要两边的boolean表达式结果,有一个为false。那么结果就是false。

只有两边都为true,结果为true。


true | true = true;

true | false = true;

false | true = true;

false | false = false;

| : 两边只要有一个为true,结果为true。

只有两边都有false,结果为false。



^ : 异或;就是和|有点不一样。当true ^ true = false;

true ^ true = false;

true ^ false = true;

false ^ true = true;

false ^ false = false;

^ : 两边相同结果是false。

两边不同结果是true。


4

&和&&的特点:

&:无论左边是true是false。右边都运算。

&&:当左边为false时,右边不运算。



|:两边都参与运算。

||:当左边为true。右边不运算。


if和switch语句很像。

具体什么场景下,应用哪个语句呢?

如果判断的具体数值不多,而是符合byte short int char这四种类型。

虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。


6

负数的二进制表现形式

整数取反+1

7 左移右移




8

1,变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。

for语句执行完毕。该变量在内存中被释放。

2,for和while可以进行互换。如果需要定义循环增量。用for更为合适。


9

什么时候用重载?

当定义的功能相同,但参与运算的未知内容不同。

那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。



10

1,break跳循环continue结束本次循环进入下次循环。

2,break和continue单独存在时,下面可以有任何语句。因为都执行不到。


11

while:先判断条件,只有条件满足才执行循环体。

do while: 先执行循环体,在判断条件,条件满足,再继续执行循环体。

简单一句话:do while:无论条件是否满足,循环体至少执行一次。


12

ArrayIndexOutOfBoundsException: 3:操作数组时,访问到了数组中不存在的角标。

NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。


13



this:就代表本类的对象,到底代表哪一个呢?

this代表它所在函数所属对象的引用。

简单说:哪个对象在调用this所在的函数,this就代表哪个对象。



this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。

但凡本类功能内部使用了了本类对象,都用this表示。


this语句 :用于构造函数之间进行互相调用。


this语句只能定义在构造函数的第一行。因为初始化要先执行。


14


静态:static。

当对象中出现共享数据时,该数据被静态所修饰。

对象中的特有数据要定义成非静态存在于堆内存中。


什么时候定义静态函数呢?


当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

用法:是一个修饰符,用于修饰成员(成员变量,成员函数).

当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,

还可以直接被类名调用。类名.静态成员。


static特点:

1,随着类的加载而加载。

   也就说:静态会随着类的消失而消失。说明它的生命周期最长。

2,优先于的对象存在

明确一点:静态是先存在。对象是后存在的。

3,被所有对象所共享

4,可以直接被类名所调用。



实例变量和类变量的区别:

1,存放位置。

类变量随着类的加载而存在于方法区中。

实例变量随着对象的建立而存在于堆内存中。

2,生命周期:

类变量生命周期最长,随着类的消失而消失。

实例变量生命周期随着对象的消失而消失。


静态使用注意事项:

1,静态方法只能访问静态成员。

非静态方法既可以访问静态也可以访问非静态。

2,静态方法中不可以定义this,super关键字。

因为静态优先于对象存在。所以静态方法中不可以出现this。

3,主函数是静态的。


静态有利有弊

利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。

可以直接被类名调用。

弊端:生命周期过长。

 访问出现局限性。(静态虽好,只能访问静态。)



静态的应用:

每一个应用程序中都有共性的功能,

可以将这些功能进行抽取,独立封装。

以便复用。



15

设计模式:解决某一类问题最行之有效的方法。

java中23种设计模式:

单例设计模式:解决一个类在内存只存在一个对象。


想要保证对象唯一。

1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象

2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。

3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。



这三部怎么用代码体现呢?

1,将构造函数私有化。

2,在类中创建一个本类对象。

3,提供一个方法可以获取到该对象。

对于事物该怎么描述,还怎么描述。

当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。

class Single
{

	private  Single(){}

	private static Single s = new Single();

	public static  Single getInstance()
	{
		return s;
	}
}






16

继承:
特点:
1,提高了代码的复用性。
2,让类与类之间产生关系,是多态性的前提。

Java中的继承。
1,java只支持单继承,不支持多继承。为啥呢?答案:因为继承了多个父类如果有相同方法时,子类对象不确定运行哪一个。
2,Java还支持多层继承。A-->B--->C  原来可以形成继承体系。
想要使用体系功能,"查阅父类功能,建立子类对象调用功能。"
注解:父类的由来其实是由事物中的共性内容不断向上抽取而来的。 所以父类中定义的是该体系中的最基本,最共性功能。

继承出现后,代码上也有一些特点:
1,变量。
当子父类中定义了相同的名称的成员变量,
子类要使用父类中的同名变量时,需要使用关键字super来区分。
一般不会出现这种情况,因为父类中有了,子类不需要定义。
而且父类定义时,一般变量都私有化。

2,函数。
子类可以直接访问父类中非私有的成员函数。
特殊情况:当子类中定义了与父类一模一样的方法时,会发生覆盖操作。大多指的是非静态方法。
 最终会运行子类的方法,父类相当于被覆盖了。
 函数的另一个特性:覆盖(重写,复写)。
 什么时候用啊?
 当父类的功能要被修改时,不建议修改源码。因为是灾难。
 只要通过一个类继承原有类,定义一个新的升级后的功能即可。
 但是功能是相同的,只是实现方法改变。这是子类可以沿袭父类中的功能定义,
 并重写功能内容。这就是覆盖。

 覆盖很爽,但是有注意事项:
 1,子类覆盖父类时,必须权限要大于等于父类权限。
 2,静态不能覆盖非静态。

3,构造函数。
构造函数可以本类进行对象初始化,也可以给子类对象进行初始化。
子类对象初始化过程:
子类中的所有构造方法都会访问父类中空参数的构造函数,
因为每一个构造函数的第一行,都有一句隐式的super语句。
为什么要有这条语句?
因为子类会获取到父类中的数据,必须要先明确父类对数据的初始化过程。

当父类中没有空参数构造函数时,子类构造函数必须通过super句来明确要访问的父类中指定的构造函数。

当时子类构造函数也可以通过this语句访问本类中的构造函数。
但是子类中肯定,至少有一个构造函数会访问父类。


17


抽象类:其实就是在分析事物时,事物中的功能有些是不明确的内容的。这些不明确内容就是抽象的。可以通过抽象函数来描述。



抽象函数一定要定义在抽象类中,因为,抽象函数所在类,也必须被抽象标识。


写法特点:
1,抽象函数只对函数进行声明,没有函数主体。
2,抽象类和抽象函数都需要用abstract修饰。
3,抽象类不可以进行实例化。
4,想要使用抽象功能,必须通过子类覆盖了父类中所有的抽象方法后,才可以对子类实例化。
如果只覆盖了部分抽象方法,那么子类还是一个抽象类。

也可以理解为:抽象类是一个父类,是不断向上抽取而来的,
在抽取过程中,只抽取了方法声明,但没有抽取方法实现。

抽象类和一般类差不多。
区别:
抽象类可以定义抽象方法。
抽象类不可以建立对象。
其实抽象类一样用于描述事物,既可以定义抽象方法,也可以定义非抽象方法。


18

接口

初期理解:接口看上去是一个特殊的抽象类。里面存的都是抽象方法。

特点:
格式:
1,通过interface来定义。
2,接口中常见成员:常量,抽象方法。
而且这些成员都有固定的修饰符。
常量:public static final
方法:public abstract 
3,接口中的成员都是共有的。
4,一个类可以对接口进行多实现,也弥补了多继承带来的安全隐患,所以java对多继承进行了改良。
用多实现方法来体现多继承的特性。
5,一个类可以继承一个类的同时,实现多个接口。
6,接口与接口之间是继承关系,而且可以多继承。
应用特点:
1,接口是对外暴露的规则。
2,接口是功能的扩展。
3,接口的出现降低了耦合性。
别忘了说的时候,需要举例。如usb。pci,主板。插座。




19

抽象类和接口异同:

相同:
1,都可以在内部定义抽象方法。
2,通常都在顶层。
3,都不可以实例化,都需要子类来实现。

不同点:
1,抽象类中可以定义抽象方法和非抽象方法,
而接口中只能定义抽象方法。
2,接口的出现可以多实现。
抽象类只能单继承。
也就是说:接口的出现避免了单继承的局限性。

3,继承和实现的关系不一致。继承:is a,实现:like a 


20

多态


一。表现:

父类或者接口的引用指向了或者接收了自己的子类对象。



二。前提:

1,类与类之间要有关系。继承,实现。

2,通常都会有覆盖。



三。好处:

预先定义的程序可以运行后期程序的内容。

增强了程序的扩展性。



四。弊端:

虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。

不能预先使用子类中定义的特有功能。



五。多态的注意事项:

在代码中。

对于成员函数:Fu f = new Zi(); f.method();

编译时期:看左边。

运行时期:看右边。

因为成员函数有一个覆盖操作。

对于非私有的实例变量,

静态变量,静态方法。


编译和运行都看左边。



六。转型。

子类对象被父类引用:子类对象在向上转型。

将指向子类对象的父类应用转换成子类类型引用:向下转型。


19

内部类的访问规则:

1,内部类可以直接访问外部类中的成员,包括私有。

之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this

2,外部类要访问内部类,必须建立内部类对象。Outer.Inner in = new Outer().new Inner();



内部类定义在局部时,

1,不可以被成员修饰符修饰

2,可以直接访问外部类中的成员,因为还持有外部类中的引用。

但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。


匿名内部类:

1,匿名内部类其实就是内部类的简写格式。

2,定义匿名内部类的前提:

内部类必须是继承一个类或者实现接口。

3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}

4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。

5,匿名内部类中定义的方法最好不要超过3个。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值