Dylanの博客

记录生活,记录成长

0%

2Java基础

2.1面向对象的基础概念

是一种程序设计方法和设计规范。从对象出发来构造软件系统,并在系统架构过程中京可能的运用热泪的自然思维方式。

2.1.1类和对象

•把相似的对象划归成一个类。

•在软件中,类就是一个模板,定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。对象是实际存在的该类事物的每个个体。

•类是创建对象的模板,对象是类的实例。

2.1.2属性和方法

2.1.3对象的继承

•理解继承是理解面向对象程序设计的关键。

•在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。

•在Java中,不允许多继承。

2.1.4对象的重用

1.创建新对象的时候,应该以继承现有对象为前提,而不是创建新对象

2.尽量以现有对象来架构程序。

2.1.5对象的封装

Java中通过将数据封装、声明为私有的(private),再提供一个或多个公开的(public)方法实现对该属性的操作,以实现下述目的:

1.隐藏一个类的实现细节;

2.使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

3.便于修改,增强代码的可维护性;

2.1.6对象的多态性

在一般类中定义的属性或者方法被特殊类继承后,可以具有不同的数据类型或者表现出不同的行为。

2.2Java语言中类的定义

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Person 
{
public int age ;
public String name;
public String sex;

public void show()
{
System.out.println("name="+name);
System.out.println("age="+age);
System.out.println("sex="+sex);
}
}

2.2.1类的属性

属性成员是具有某种数据类型的变量或者常量,当创建一个对象是,它会包含类中定义的所有变量。

2.2.2类的方法

1.方法的定义

2.main()方法,包含主方法的类称为主类,它是程序执行的入口点。java文件中,可以有多个类,但只能有一个public类,且与java文件同名。

3.方法的调用

2.3常量与变量

2.3.1 常量

在程序运行过程中其值保持不变的量,如1,true, “WHUT”, 6.5等等。

1.用final定义的符号常量位于方法定义之内,只能在方法内使用,

2.如果希望一个符号常量被本类的其他方法使用,就必须用static
final声明,并将声明语句放到main()方法外部。

3.如果用public static final 来声明,该符号常量还可以被其他类使用

2.3.2 变量

定义:变量(Variable)用于表示其值在程序运行过程中可以改变的数据。变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据。

分类:

1.按所属数据类型划分:基本类型变量和引用类型变量

2.按声明的位置划分:

局部变量——方法或语句块内部定义的变量

成员变量——方法外部、类的内部定义的变量

变量的生存期

局部变量的生存期就是其所在方法或语句块单次执行的期间——在程序每一次调用方法或运行进入到一个语句块中时,其中的局部变量才被创建并可用,随方法/语句块的退出,局部变量将被销毁。

成员变量的生存期与其所属的对象相同,随着对象的创建而创建、随对象的销毁而销毁。

2.3.3 标识符与关键字

java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。

2.4数据类型

2.4.1基本数据类型

Java中定义了四类/八种基本数据类型

Ø逻辑型 – boolean

Ø文本型 – char

Ø整数型 – byte, short, int, long

Ø浮点型 – float, double

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//整数拓展: 二进制0b 八进制0 十进制 十六进制0x
int i = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x
10
8
16

//浮点数拓展:银行业务怎么表示
//使用BigDecimal 数学工具类

//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点数进行比较

float f = 0.1f; //0.1
double d = 0.1; //0.1
System.out.println(f==d); // false
float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1==d2); //True

//字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1); //a
System.out.println((int)c1); //97
System.out.println(c2); //中
System.out.println((int)c2); //20013
//所有的字符本质还是数字
//编码 Unicode 表:(97=a 65=A) 2字节 65536
char c3 ='\u0061';
//char c3 ='\141';
System.out.println(c3); //a

//转义字符
//八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377' \0:空字符
//Unicode转义字符:\u + 四个十六进制数字;0~65535 \u0000:空字符
// \t制表符 \n 换行

2.4.2各类型之间的相互转换

自动类型转换:在某种条件下,系统自动完成类型转换

1.两种类型兼容 •例如:int 和 double 兼容

2.目标类型大于源类型 •例如:double 型 大于 int 型

强制类型转换:(target_type)value

1
2
3
int a:
byte b;
b=(byte)a;

2.5运算符和表达式

1636185590914

1636185760593

运算符的优先级:

1636185849650

区别:执行顺序不同

int a=2; int b= a + 3 * a++; 8

int a=2; int b= (a ++)+ 3 * a; 11