第一章 java语言概述
- 语言诞生发展:
关键词:Oak、Sun公司、Oracle公司
Java出现于1995年
- 语言特点:
①简单性;②面向对象;③分布性;④健壮性;⑤安全性;⑥体系结构中立;⑦可移植性;⑧解释型语言;⑨高效性;⑩多线程机制;11动态性
Java三大平台
- Java程序的编译与运行(半编译半解释)
- java程序的种类,Application的结构
Java Application,即Java应⽤程序,是⽤Java语⾔编写的通过独⽴的Java解释器来解释运⾏的完整的桌⾯应⽤程序,可⽤字符界⾯和图形界⾯进⾏显⽰输出,代码中必须包含main()⽅法作为程序运⾏的⼊⼝。
- 一个良好的JAVA程序包括:
package 语句(0或1句),
import 语句(≥0),导入其他类的类库,
类定义——class(≥1),
一个文件只能有一个public类(与文件同名)
第二章 java语言开发环境
- 开发环境下载、安装、配置、简单输入输出代码,并编译运行
public class & class
- 一个Java源文件当中可以定义多个class
- 一个Java源文件当中public的class不是必须的
- 一个class会定义生成一个xxx.class字节码文件
- 一个java源文件当中定义公开的类的话,只能有一个,并且该类的名称必须和java源文件名称一致
每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B,想执行x.class中的main方法:java x
第三章 java语言基础
数据类型、关键字和标识符、常量与变量、数据类型转换、运算符与表达式
- 数据类型分为基本数据类型和引用数据类型
- 标识符命名规则
① 标识符只能由数字、字母、下划线“_”、美元符号“$”组成,不能含有其它符号。
② 标识符不能以数字开始。
③ java 关键字和保留字不能作为标识符。
④ 标识符严格区分大小写。
⑤ 标识符理论上没有长度限制。
数值型数据的转换:byte→short→int→long→float→double。
字符型转换为整型:char→int。
以上数据类型的转换遵循从左到右的转换顺序,最终转换成表达式中表示范围最大的变量的数据类型。
- 数值型数据类型转化:自动类型转换、强制类型转换
字符串型数据与数值型数据相互转换
String MyNumber = "1234.56";
float MyFloat = Float.parseFloat(MyNumber);
s = s + Integer.parseInt(data[i]);
int MyInt = 1234; //定义整形变量MyInt
String MyString = "" + MyInt; //将整型数据转换成了字符串
易错题
给划线部分选择正确的答案:
____method(byte x, double y){
return (short)x/y*2;
} D.double
第四章 流程控制
分支语句:if 、 if…else 、 if…else if 、 switch…case
循环语句: while do…while for
跳转语句: break continue
第五章 数组与字符串
一维数组的声明、初始化、引用、增强for
int[ ] anArray; //声明
anArray = new int[10];//创建(为数组分配内存)
合并:
int[] anArray = new int[10];
- 增强型for循环定义如下:
for(ElementType element: arrayName){};
int[] num = {1,2,3,4,5,6};
for(int i: num){//i 是代表 num[i]
System.out.print(i);
}
二维数组的声明、初始化、引用、length的属性用法
int[][] arrayname = {{}, {}, {}};
arrayname.length 一维数组的个数
arrayname[i].length 第i行子数组的长度
字符串:length() split()、replace()、trim ()等方法
string.length()
是用来求字符串的长度,返回值为字符串的长度。
string.trim()
是用于删除字符串的头尾空白符(只有头和尾)
string.toCharArray()
为将字符串转换为字符数组。
string.replace()
为将原string 中的元素或子串替换。返回替换后的string。
String replaceStr = str.replace('a', 'b');
string.split():
分割字符串
String s1 = "a,b,c";
String[] _s1 = s1.split(",");
System.out.print("s1调用split方法后的结果为:");
for (String s : _s1) {
System.out.print("\"" + s + "\"" + "\t");
}
toString()
返回该对象的字符串表示(object
类)
第六章 类与对象
- 类的基本概念
类是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用以表达现实世界的一种抽象概念
- 类的定义 基于写程序
- 访问控制符 包
类的访问控制符或者为public,或者默认。
- 字段 字段封装
字段(Field),是 Java编程语言中类的一个成员,主要用来存储对象的状态(如同某些编程语言中的变量),所以有时也可称为成员字段或成员变量。
在类中有下列几种变量(Variable):
类中的成员变量,称为字段。
代码块中的变量,称为局部变量。
方法和构造方法声明中的变量,称为参数。
局部变量和参数始终被归类为“变量”(而不是“字段”)。
封装是指把变量和方法包装在一个类内,以限定成员的访问,从而达到保护数据的一种技术。
封装字段是重构代码的一种操作,是通过一对存取方法来访问字段。存取方法也称为读/写方法或
getter
和setter
方法。
- 方法 方法的返回值 参数
JAVA把数据成员称为成员变量,把函数成员称为成员方法,成员方法简称方法
- 方法重载(重载的定义)
重载是实现多态的一种方法,在面向对象的程序设计语言中,有一些方法的含义相同,但带有不同的参数,这些方法使用相同的名字,这就叫方法的重载。
名称相同、参数的列表必须不同(参数个数不同、或参数类型不同、或参数顺序不同)
- 构造方法
-
作用(初始化对象):在对象被创建时初始化对象成员的方法。
-
定义(和类名相同,没有返回值),
不用void修饰
-
默认构造方法 :编译系统自动生成
-
构造方法重载:可以让用户用不同的参数来创建对象
-
构造方法调用另一个构造方法
通过this()语句实现
例子:
public Cylinder() {
this(2.5, 5, "红色");//必须写在构造方法内第一行位置
System.out.println("lyh");
}
public Cylinder() {
System.out.println("LYH");
radius = r;
height = h;
color = str;
}
-
静态成员
static
称为静态修饰符,被他修饰的成员称为静态成员,也被成为类成员,不用static修饰的成员称为实例成员。 -
静态初始化器
更好的初始化静态域的方法是静态初始化器。静态初始化器也是一个方法,但是它没有方法名。当静态初始化器所在类第一次被使用时,静态初始化器首先被调用,而且仅此一次而已,以后不管这个类被使用多少次,静态初始化器都不会再被调用,
静态初始化器定义形式是:
static {
//静态域初始化语句
}
-
静态变量(类变量)(类似全局变量):独立与方法之外
-
静态方法:
① 不被任何一个对象所专有;
② 他只能访问类变量
,或调用staitic成员方法
,静态方法中不能访问实例变量和实例方法。
③ 不能使用this
或super
-
对象的应用
类类型的变量作为方法参数或返回值
对象数组作为参数 -
匿名对象
匿名就是没有名字的对象,在创建对象时,只通过new的动作在堆内存开辟空间,却没有把堆内存空间的地址值赋值给栈内存的某个变量用以存储
//正常对象
Student lyh = new Student();
//匿名对象:
new Student()
第七章 继承、抽象类、接口和枚举
- 继承的概念:实现代码的复用,被继承的类称为父类(超类),由继承的类称为子类。
- 语法定义
class SubClass extends SuperClass {
...
}
- 多态性:重载和覆盖
① 字段 可以(继承、隐藏、添加)
② 方法可以(继承、覆盖、添加、重载)
覆盖与重载类似,不同之处是名称、参数列表均与父类完全相同的方法名,用以重写父类中同名方法的功能。
在Java中有方法的重写,没有属性/字段的重写,准确的来说,是隐藏字段代替了重写。
-
构造方法 super用法
①访问父类的构造方法;
②访问父类的成员变量(super.变量名
)和成员方法(super.方法名
);
③但不能访问在子类添加的成员;
④不能访问父类private
成员,protected
即可 -
Final类 不可被继承
-
Object是所有类的根类
-
抽象类:创建专门的类作为父类
abstrct
可参考继承和多态练习 -
接口:可以实现多重继承
interface
亦可参考继承和多态练习
[public]interface 接口名称 [extends 父接口名称名列表] {
[public][static][final] 数据类型 成员变量名 = 变量;
[public][abstract] 返回值的数据类型 方法名(参数表);
[public] static 返回值的数据类型 方法名(参数表){
方法体;
}
[public] default 返回值的数据类型 方法名(参数表){
方法体;
}
}
第八周 异常处理
例题点击
- 异常处理的相关类
Throwable
- 异常的捕获
try...catch
(try后面可以跟多个catch来处理try块里面生成的异常事件)
try...finally
try...catch...finally
throw
(直接抛)
throws
(间接抛)
try {
...
} catch(Exceptionl e1) {
...
} catch(Exception2 e2) {
...
} finally {
...
}
finally 是强制性语句,不管有没有异常,不关try
语句块是否含有break\return\throw
,都要执行
异常中的finally一定会执行,哪怕一个方法中有return语句,也是在异常处理后才返回
异常处理后,程序继续执行
杂七杂八的知识点:
import java.util.Scanner;
—— Scanner sc = new Scanner(System.in)、sc.next()、sc.nextInt()、sc.nextDouble()- 一文搞懂java异常题 看里面的 3) Finally到底是怎么回事?
- Java继承和多态之对象类型的转换(向上转型、向下转型)
- `(易错题)以下代码段执行后的输出结果为( )
int x=-3; int y=-10; System.out.println(y%x); A. -1
- &&(短路与 表示短路与运算)和&(逻辑与)
- 方法的签名由方法的名称和参数列表组成。
- 抽象类不能用final修饰
定义一个Circle类,包含一个常量PI=3.14,一个私有属性r,一个公共构造方法和一个公共计算面积的方法getarea();
定义一个圆柱体Cylinder类,继承自Circle类,包含1个私有属性height,一个公共构造函数方法和一个公共计算体积volume的方法;
编写一个测试类Test,从键盘接受圆柱体的半径和高,并输出底面积和体积。
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
double r=sc.nextDouble();
double h=sc.nextDouble();
Cylinder cy=new Cylinder(r,h);
double s=cy.getArea();
double v=cy.volume();
System.out.println("s="+s+";v="+v);
}
}
class Circle{
final double PI=3.14;
private double r;
Circle(double R){
this.r=R;
}
double getArea() {
return PI*r*r;
}
}
class Cylinder extends Circle{
private double height;
Cylinder(double R,double height) {
super(R);
this.height=height;
// TODO Auto-generated constructor stub
}
double volume() {
return getArea()*height;
}
}