学习笔记4

Switch 的表达式可以为byte,short,int,char,JDK7之后的版本可以为string。

带标签的语句:可以直接跳出多层循环。

如:

loop1 : for( int i=0;i<100;i++){

loop2 : for (int j=0;j<i;j++){

if (条件){

break loop1; // or break loop2;

}

}

}

Static关键字的特点:(可以修饰成员变量,也可以修饰成员方法)

1.       随着类的加载而加载

2.       优先于对象存在

3.       被类的所有对象共享

4.       可以通过类名调用,也可以通过对象名调用(一般用类名调用)

5.       静态方法只能访问静态成员变量和静态成员方法。

静态变量和成员变量的区别:

1.       所属不同

静态变量属于类,所以也称为类变量

成员变量属于对象,所以也称为实例变量(对象变量)

2.       内存中的位置不同

静态变量存储于方法区的静态区

成员变量存储于堆内存

3.       内存出现时间不同

静态变量随着类加载而加载,随着类消失而消失

成员变量随着对象创建而创建,随着对象消失而消失

4.       调用不同

静态变量可以通过类直接调用,也可以通过对象调用

成员变量只能通过对象调用。

将一个类的构造方法私有(private),其余成员和方法全部设为static,则类中的成员变量和成员方法将不能够通过创建对象来访问,只能通过类名去访问成员和方法。

Java.lang包不需要import,其他的包都需要import

代码块:

静态代码块(只执行一次),构造代码块(每次调用构造方法都执行),构造方法。

继承的优点:

提高了代码的复用性

提高了代码的维护性

让类与类产生了关系,是多态的前提。

缺点:高耦合性。

this和super的区别:

this代表本类对应的引用

super代表父类存储空间标识(父类的引用,可以操作父类的成员)

使用:

1.       调用成员变量

a)         this.成员变量

b)        super.成员变量

2.       调用构造方法

a)         this(…)

b)        super(…)

3.       调用成员方法

a)         this.成员方法

b)        super.成员方法

方法重写(override,子类继承父类方法并进行重写)

方法重载(overload,同一个类中,方法名相同参数不同的方法)

Final可修饰类、变量、方法

修饰变量时,可修饰基本类型和引用类型。

修饰基本类型:变量值不能改变。

修饰引用类型:地址值不能改变。

多态:

父类的引用指向子类对象。

Father f = new Son();

子类继承父类的方法,所以f调用父类方法时,实际调用的是子类重写的父类方法。

多态的缺点:

不能调用子类中特有的方法。(解决方法:对象向下转型)

Father f = new Son(); (向上转型)(f调用成员变量时调用的是父类成员,调用

成员方法时调用的是子类的方法(只能是重写的父类的方法,特有的额方法不行)。)

Son s = (Son) f;(向下转型)(s调用成员变量时,调用的是子类成员,可以调用子类的所有方法(包括重写的父类的方法和子类特有的方法。))

多态中的成员访问特点:

1.       成员变量

编译看左边,运行看左边

2.       构造方法

创建子类对象时,访问的是父类的构造方法,对父类的数据进行初始化。

3.       成员方法

编译看左边(只能调用子类重写的父类方法),运行看右边(调用子类方法)。

抽象类有构造方法,但是不能实例化。该构造方法的作用是用于子类访问父类数据的初始化。

抽象类可以通过多态实例化子类(父类引用指向子类对象)(对象转型)。

抽象类的成员特点:

1.       成员变量:可以是变量,也可以是常量

2.       构造方法:有,也可带参

3.       成员方法:可以是抽象方法,也可以是非抽象方法

多态的分类:

1.       具体类多态

2.       抽象类多态(常用)

3.       接口多态(最常用)

接口的特点:

1.       成员变量:接口中的变量默认是static且final。

2.       构造方法:无,没有构造方法。

3.       成员方法:只能是抽象方法。(默认为public且abstract)

类与类的关系:继承关系,只能是单继承,可以多层继承。

类与接口:实现关系,可以同时实现多个接口。

接口与接口:继承关系,可以单继承,也可以多继承。

抽象类与接口的区别:

1.       成员区别

a)         抽象类:

i.              成员变量:

ii.              构造方法:

iii.              成员方法:

b)        接口:

i.              成员变量:

ii.              成员方法:

2.       关系区别

a)         类与类

b)        类与接口

c)         接口与接口

3.       设计理念区别

a)         抽象类

b)        接口

参数传递时,Java 中只有值传递,但分两种情况,如果是基本类型(如int,double等基本数据类型),传递的是数据值,如果是引用类型(如类,接口,数组),传递的是地址值。

基本类型:形式参数的改变不影响实际参数。(因为传递的只是数据值。)

引用类型:形式参数的改变直接影响实际参数。(因为传递的是地址,所以所指向的内容会随时改变。)

UML语言

面向对象思想

类与对象及其使用

对象的内存图

成员变量和局部变量的区别

匿名对象

封装

this关键字

构造方法

static关键字

面向过程的思想:

需求分析(要做什么)----概要设计(要怎么做)----详细设计(代码实现,具体实现时要一步一步去实现,具体的每一步都要我们去实现和操作,这些步骤按照一定的顺序协调操作,完成需求。)

当需求较单一,需求变更较少时,并无明显缺点。

缺点:当需求较复杂,维护较频繁,功能较多,需求变化较多时,维护起来会很难。

面向对象:

面向对象的开发:就是不断的创建对象、使用对象、指挥对象做事情。

面向对象的设计:就是管理和维护对象之间的关系。

面向对象的特征:封装(encapsulation)、继承(inheritance)、多态(polymorphism)。

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。

Private修饰成员变量,外部不能访问,只能通过成员方法访问

对象是类的具体实现,是一个类的具体实例。

Java中内存分为3个区:栈、堆、方法区(类描述区,静态区)。

成员变量和局部变量的区别:

在类中位置不同:

成员变量:在类中方法外。

局部变量:方法内或者方法声明上

在内存中的位置不同:

成员变量:在堆内存

局部变量:在栈内存

生命周期不同:

成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

初始化值不同:

成员变量:有默认初始化值

局部变量:没有默认初始化值,必须定义、赋值,然后才能使用。

注意事项:局部变量名字可以和成员变量名字一样,在方法中使用的时候采用的是就近原则。

匿名对象(new classname()):

调用方法,只适用于只调用一次的时候,不适合于多次调用。匿名对象调用完毕即消失(可被回收)。

时间: 2024-10-28 19:53:57

学习笔记4的相关文章

C PRIMER PLUS 学习笔记(一)

1显示程序执行的窗口一闪即逝.可以添加如下语句: getchar() 作用是获取键盘输入. 2 inf 和 nan float toobig = 3.4e38 * 100.0f; float not_a_number = asin(1.2);//math.h printf("%e \t %e\n", toobig,not_a_number); inf-表示无穷大,nan-Not-a-number 3 long double 的输出格式 long double x; x = 3.2e-5

C++ Primer Plus学习笔记之虚函数

C++ Primer Plus学习笔记之虚函数 C++语言的多态性有两种类型:静态多态性和动态多态性.函数重载和运算符重载就是静态多态性的具体表现,而动态多态性是指程序运行过程中才动态的确定操作所针对的对象,它是通过虚函数实现的: 1,虚函数的概念: 一个指向基类的指针可用来指向从基类派生的任何对象,这样就可以达到一个接口多个实现的访问了:虚函数是在基类中被冠以virtual的成员函数,它提供了一种接口界面.虚函数可以在一个或者多个派生类中被重新定义,但要求在派生类中从新定义时,虚函数的函数原型

C++ Primer Plus学习笔记之静态成员

C++ Primer Plus学习笔记之静态成员 关键字static可以用来说明一个类的成员(包括数据成员和成员函数),这样的成员被称为静态成员: 1,静态数据成员 在一个类中,若将一个数据说明前加上static,则该数据成为静态数据,静态数据成员被该类的所有对象共享.无论建立多少个该类的对象,都只有一个静态数据存储空间: 具体语法如下: 类型名 类名::静态数据成员[=常量表达式] 其中,常量表达式用于初始化类的静态数据成员: 静态数据成员属于类,而不属于对象,因为静态成员的存在是不依赖于某个

C++ Primer Plus学习笔记之继承类的初始化顺序

C++ Primer Plus学习笔记之继承类的初始化顺序 基类的构造函数,析构函数和操作符函数operator=是不能被派生类继承的: 那么,当创建一个派生类对象时,怎样调用基类的构造函数对基类的数据进行初始化呢??? 答案是:构造函数执行时遵行先兄长(基类),再客人(对象成员),后自己(派生类)的顺序: 另一方面,执行析构函数时,先执行派生类的析构函数,再执行基类的析构函数.原因是,对基类的破坏隐含了对派生类的破坏,所以派生类的析构函数必须先执行: #include<iostream> u

C++ Primer Plus学习笔记之运算符重载

C++ Primer Plus学习笔记之运算符重载 1,成员函数和友元函数选择的建议 下面我们先看两个例子: 成员函数重载 #include<iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0) { re=r; im=i; } Complex operator+(const Complex& obj); Complex operator!(); void Display

C++ Primer Plus学习笔记之拷贝构造函数

C++ Primer Plus学习笔记之拷贝构造函数 1,什么是拷贝构造函数 拷贝构造函数有两个含义: 首先,它是一个构造函数,当创建一个新对象时,系统自动调用它: 其次,它将一个已经定义过的对象的数据成员逐一对应的复制给新对象: 如果一个类没有显式定义拷贝构造函数,C++编译器可以为该类产生一个缺省的拷贝构造函数.这个缺省的拷贝构造函数采用C的方式,将拷贝对象的内存一个字节一个字节的拷贝到拷贝对象的内存中(内存拷贝): 2,拷贝构造函数的作用 (1)创建一个新对象,并将一个已存在的对象拷贝到这

c++ primer plus学习笔记(栈指针)

c++ primer plus 程序清单14.5 程序清单14.6 模拟如下情况: 某人将一车文件交给plodson,如果plodson的收取蓝是空的,他将取出车中最上面的文件,将它放入收 取蓝,如果收取蓝是满的,他将取出栏中最上面的文件,并进行处理,然后放入发出蓝,如果收取蓝不空不满 plodson将采用抛硬币的方式来决定采取措施. 很明显,我们需要使用栈去管理上述文件. 1 #ifndef STACK_H_ 2 #define STACK_H_ 3 4 //定义类模板 5 template

《c++primer》学习笔记

花了一个多月时间总算是把这本书看完了,再去看自己家游戏的服务器的代码还是很难懂,里面用到了好多boost库的东西,不过这些东西很多都已经加入了c++11的新标准里了,要到自己能做服务器还得接着学,所以接下来的一个月开始看<C++标准库>. 把看<c++primer>的时候抄的笔记先誊在这里方便以后参考. #include 来自标准库的头文件使用<> 来自非标准库的头文件使用"" ------------------------------------

c++ primer plus 学习笔记

我的机子用Xcode,单位是字节 0开头为8进制 0x为16进制 cout默认输出的是10进制 wchar_t 宽字节,它是一种足够大的整形类型,可以用来表示的是比如中文的编码 c常量一旦被定义,就不能被修改(const) 浮点数,c++中浮点数在计算内存中由两部分组成,一部分为基数,一部分用来表示浮点,这个浮点是用二进制来表示. 非常大或者非常小的数可以用e表示法来表示 这个程序充分说明了精度的问题,double能保存更高的精度.对于c++来说float只能保存6位有效数字,如果需要更高的精度

《C++ Primer》学习笔记【第一部分 基本语言】

第2章 整型的赋值:当我们试着把一个超出其范围的值赋给一个指定类型的对象时,结果如何?答案取决于类型是signed还是unsigned的.对于unsigned,编译器会将该值对unsigned类型的可能取值数目求模然后取所得值:对于signed类型,未定义行为,很多处理器处理方式和unsigned类似. 字符串字面值的连接:std::cout << "multi-line" L"literal " << std::endl;结果未定义,即连接