Java学习报告
目录
第一章 初识java与面向对象程序设计 1
第二章 java编程基础 3
第三章 面向对象程序设计(基础) 13
第四章 面向对象程序设计(进阶) 15
第五章 异常 17
第六章 java常用类 17
20
初识java与面向对象程序设计
- Java概述
- 计算机编程语言发展史
“计算机之父”冯·诺依曼
计算机语言经历了三个历程的发展:机器语言、汇编语言、高级语言
-
- Java语言发展史
“java语音之父”詹姆斯·高斯林
-
- Java语言特点
Java语言共有十大特点:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线索性、动态性
-
- Java跨平台原理
跨平台性是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。
Java是跨平台的,它自带的Java虚拟机(Java Virtual Machine, JVM)可以很好地实现跨平台性。Java源程序代码经过编译后生成与平台无关的二进制代码,即字节码文件(.class文件),可被JVM中的Java解释器解释成所在具体平台上的机器指令,可以在装有JVM的任何平台上运行,从而实现 Java 与平台无关
- 面向对象程序设计思想
- 面向过程程序设计
- 面向对象程序设计
- 面向对象与面向过程程序设计的比较
- 面向对象程序设计思想
java编程基础
- 变量与常量
- 关键字:预先定义好的有特别意义的单词。
- 变量与常量
保留字:预先保留,在以后的版本中可能使用到的特殊标识符。
-
- 标识符与命名规范
标识符是给Java中的类、方法、变量、包命名的符号。标识符需要遵 守一定的规则。
. 标识符只能由字母、数字、下划线、美元符号组成,并且不能以数字开头。
Java标识符大小写敏感,长度无限制。
.标识符不可以是Java关键字和保留字。
-
- 数据类型
-
- 变量的定义与赋值
变量必须先声明在使用,变量的值是可以改变的,在声明一个变量之后,它的值可被改变任意次。变量名的命名遵守小写字母开头的驼峰规则
数据类型 变量名;
变量名=变量值;
数据类型 变量名1,变量名2,变量名3
-
- 常量
在变量名前加上final关键字即可。命名要求,一般要求所以字母大写,单词之间使用“-”隔开
Final 数据类型 常量名=常量值
//至始至终只能被赋值一次
-
- 变量的类型转换
在Java中,类型转换是指将一个变量的值从一种数据类型转换为另一种数据类型。类型转换主要分为两种:自动类型转换和强制类型转换。
自动类型转换是指在数值范围允许的情况下,Java编译器自动进行的类型转换。这种转换发生在从较小范围的数据类型转换到较大范围的数据类型时,例如:
从 byte 转换到 short、int、long、float 或 double
强制类型转换是指在数值范围可能不允许的情况下,由程序员显式指定的类型转换。这种转换需要在代码中明确写出转换的类型,例如:
int num1=10;
double num2=num1;
-
- Scanner的使用
Scanner sc=new scanner(System.in);
String str=sc.next();//输入字符串
int num=sc.nextint();//输入数字
- 运算符与表达式
- 算数运算符
- 运算符与表达式
-
- 赋值运算符
-
- 关系运算符
-
- 逻辑单元运算符
-
- 位运算符
-
- 三元运算符
条件表达式?表达式1:表达式2;
-
- 运算符的优先级
- 选择结构
- If 语句
- 选择结构
Java 中的条件语句允许程序根据条件的不同执行不同的代码块。一个 if 语
句包含一个布尔表达式和一条或多条语句。
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("这是 if 语句");
}
}
}
-
- Switch 语句
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
-
- 选择结构的嵌套
- 两种选择结构的比较
If 语句和switch语句都可以实现逻辑判断,但它们的使用场景有所不同。If语句用于区间值的判断,而switch语句只能用于确定值的判断。
- 循环结构
- for语句
- 循环结构
最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变
量,也可以是空语句。然后,检测布尔表达式的值。如果为 true,循环体被执
行。如果为false,循环终止,开始执行循环体后面的语句。执行一次循环后,
更新循环控制变量。再次检测布尔表达式。循环执行上面的过程。
public class Test {
public static void main(String[] args) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x );
System.out.print("\n");
}
}
}
-
- while语句
只要布尔表达式为 true,循环就会一直执行下去。
public class Test {
public static void main(String[] args) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
}
-
- do while语句
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们
需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相
似,不同的是,do…while 循环至少会执行一次
public class Test {
public static void main(String[] args){
int x = 10;
do{
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
}
-
- break和continue语句
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
Continue只能终止某次循环,继续下一次循环。
-
- 循环嵌套
- 三种循环语句应用场景
如果能够确定循环次数,建议使用for循环;如果不能就用while,do while可以实现至少执行一次。
- 方法
- 方法介绍
- 方法声明
- 方法
修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数名2…){方法体
返回值return;}
-
- 方法重载
意思是相同的方法名但其中方法内容不一样,参数不一样,从而实现不一样的结果
-
- 方法递归
编程语言中,若方法直接或间接调用方法本身,则称该方法为递归方法
- 数组
- 数组概念
- 数组
数组就是一种能够存放相同数据类型的有序集合,或者说他是一个存储数据的地方
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
-
- 数组常见操作
通过索引操作元素
数组的遍历
获取数组的最值
通过值获取索引
数组元素的反转
-
- 数组的排序操作
1.冒泡排序
2.选择排序
-
- 二分查找法
- 方法中的可变参数
当方法中的参数个数不确定,但参数的类型确定是可以使用可变参数
-
- 二维数组
数据类型[][]数组名=new 数据类型[m][n];
M表示数组长度,n表示数组中每个元素的长度
-
- Arrays工具类
- Jav中的堆栈内存
JVM是基于堆栈的虚拟机,堆栈是一种数据结构,是用来存储数据的。对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。
栈内存用于存储局部变量,以及对象的引用,它是一个连续的内存空间,由系统自动分配,性能较高。栈内存具有先进后出、后进先出的特点,虚拟机会为每条线程创建一个虚拟机栈,当执行方法时,虚拟机会创建出该方法的一个栈帧,该方法中所有的局部变量都会存储到这个栈帧中,方法执行完毕后,栈帧弹栈。
堆内存用于存储引用类型的数据,主要是对象和数组。全局只有一个堆内存,所有的线程共用一个堆内存。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量访问堆中的数组或对象了
面向对象程序设计(基础)
- 面向对象的概念
- 什么是面向对象
- 面向对象的概念
面向对象程序设计的思维方式是一种更符合人们思考习惯的方式。
面向对象分析问题涉及到的事物或对象,创建对应的类,分析事物的属性和行为,将这些属性和行为定义到类中,在解决问题的过程中按需创建对象,通过对象调用类中的行为,最终解决问题。
-
- 类和对象
比如班上的每一位同学都是一个对象,都具备姓名、年龄、学号属性,都拥有学习、睡觉行为。而把班上的同学进行抽象,就是一个学生类。
-
- 面向对象的特征
三大特征:封装、继承、多态
- 面向对象的编程
- 类的定义
- 面向对象的编程
·Java使用class关键字来定义一个类。
·一个Java文件中可以有多个类,但最多只能有一个public修饰的类,并且这个类的类名必须与文件名完全一致。
·类名需要符合标识符规则,并且遵循大写字母开头的驼峰规则。
-
- 对象的创建与使用
类名称 对象名称 = new 类名称();
-
- 成员变量默认值
-
- 匿名对象
匿名对象就是没有名字的对象,是定义对象的一种简写方式。 当方法的参数只需要一个对象,或者仅仅想调用一下某个对象的成员方法时,大可不必为这个对象单独创建一个变量,此时就可以使用匿名对象
- 构造方法
修饰符 类名 (形式参数){ }
构造方法时的要点:初始化对象、重载、默认构造方法、带参数的构造方法、调用另一个构造方法、继承方法、私有构造
- This关键字
this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。
- Static关键字
static是静态的意思,它既可以用来修饰成员变量也可以用来修饰成员方法。
static修饰的成员变量叫作静态成员变量(类变量),修饰的成员方法叫作静态方法(类方法)。static修饰后的成员变量可以被类的所有对象共享(访问,修改),但注意它不属于某一个对象。
- 包
当有多个开发人员共同开发同一个项目,肯定会出现类名称相同的情况,这样一来就会比较麻烦,可以利用 package 关键字来解决此问题
面向对象程序设计(进阶)
- 封装
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
- 继承
class 父类 { } class 子类
extends 父类 { }
- Super关键字
我们可以通过 super 关键字来实现对父类成员的访问,用来引用当前对象的父类。
- Fina关键字
final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。
使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写:
- Object类
- 多态
指的是同一个方法调用,由于对象不同可能会有不同的行为。 多态的前提是必须存在继承,并且子类重写了父类的方法,最重要的一点是父类引用要指向子类对象。
- 抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。
<abstract>class<类名> {
<abstract><type><抽象方法名称>(方法参数列表);
}
- 接口
接口是 Java 中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成。它可以实现“ 多重传承 ”,并实现“行为上的“ 多态 ”。
- 内部类
class {//外部类
修饰符 class{内部类
}
}
内部类与外部类之间的成员变量可以互相访问。 外部类访问内部类变量时非常简单,使用内部类的对象名.变量名即可获取内部类的变量,而内部类访问外部类变量时,则需要通过外部类名.this.变量名获取
异常
- En
- 异常概述
Java中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类。
java中异常(Exception)与错误(Error)都继承自Throwable类。
- 异常处理
Java中提供了一个throw关键字,该关键字用于抛出异常。 Java中的异常本质上也是类,抛出异常时,实际上是抛出一个异常的对象,并提供异常文本给调用者,最后结束该方法的运行。 抛出异常语法格式如下:
throw new 异常 名称(参数列表):
- 异常进阶
java常用类
- 包装类
- String类概括
- StringBuffer和StringBuild
StringBuffer : 可变长字符串运行效率慢、线程安全,,JDK1.0提供
StringBuilder : 可边长字符串、运行快、线程不安全,JDK5.0提供
- 时间与日期相关类
Date类
SimpleDateFormat类
Calendar类
- 其他常用类
Math类
Random类
UUID类
枚举类