Java简介
Java是世界上应用最广泛的计算机语言,是1995年由James Gosling研发的基于C++诞生的一门面向对象语言,其主要目标是“编写一次,到处运行”。Java主要有三个版本:JEE、JSE、JME。现已成为各软件开发编写程序的首选语言。
面向对象
-
方法、属性、类、复用、封装、继承
执行任务中,需要一个方法,方法给出了执行任务的实际语句。对象有其属性,属性是由类的实际变量指定的。在java中,需要创造称为“类”的程序单元来容纳执行类的任务的方法集。类将属性和方法封装,使对象的方法和属性紧密相关。封装的一大用途是隐藏,对象之间不知其他是如何实现的,实现的细节被隐藏在对象内部,信息隐藏对良好的软件工程很重要。继承可以快速又方便的建立新类——-新类会吸收已有类的特性并可以添加新的特性。
分析与设计
面对大型程序,为了创建最佳解决方案,必须有一个详细过程。
第一步:分析项目需求——即确定系统需要完成的功能
第二步:开发出能够满足这些需求的设计
第三步:编写程序
第四步:对程序进行精简,对算法进行改进
如果分析过程是从面向对象的角度对系统进行分析和设计,则称之为面向对象的分析与设计(OOAD)
Java开发环境
Java类库也称JavaAPI (Java Application Programming Interface Java程序编程接口)
Java类库中有丰富的现有类和方法集合,其中的程序都是尽心编写的,以高效率的执行。
JDK (Java Development Kit Java开发工具包)
指的是Java开发工具集。JDK是整个Java的核心,包括了Java基础类库、Java运行环境(JRE)和Java开发工具。是做Java开发必须要安装的。
JRE(Java Runtime Environment Java运行环境)
指的是Java运行时环境。Java程序运行时必需要JRE的支持。如果系统只安装JRE的话,则意味着系统可以跑任何Java程序,但不能做Java开发。
![]()
执行Java程序的五个阶段
阶段一:创建程序
用编辑器程序编辑Java文件,里面包含Java源代码
Linux系统编辑器为vi和emacs,Windows系统为记事本
集成开发环境(IDE),提供软件开发过程的工具,常见的有:eclipse和netbeans
阶段二:将Java程序编译为字节码
字节码由Java虚拟机执行,Java虚拟机是JDK的一部分也是Java平台的基础
使用javac,如Windows中:javac 文件名.java——Windows中为命令提示符,Linux中为shell提示符,Mac OS X中为终端程序
运行后会生成.class文件——执行方法为java 文件名
阶段三:将程序加载到内存
JVM的类加载器读取.class文件,然后将其传入主存中。可以通过磁盘、网络加载.class文件
阶段四:字节验证码
字节码验证器对字节进行检查,确定是有效的安全的
阶段五:执行
JVM执行字节码,然后执行,早期JVM一次只能解释和执行一个一个字节码,如今采用解释与及时编译相结合来执行字节码。
所以执行相当于两个阶段:一是将源代码翻译成字节码,二是将字节码翻译成机器语言使之可以在电脑上执行。
堆、栈、方法区
堆:实例化对象,数据储存
栈:运行方法
方法区:加载类,分配类成员变量以及静态方法的入口。含有常量池
注释
注释是每个程序不可缺少的部分,约定中每个程序都以注释开始,注释写有每行程序的作用以及其他一些需要注意的地方。注释是给程序员看的,编译器会将注释去掉。每个右大括号后最好都有一个注释,说明此括号结束的是哪个方法或类。
注释主要有三种形式:
1.行尾加//
2./…..注释多行…./
3./*…..文档注释……/
类、标识符、方法
1.类
基本类型:byte、int、short、long、char、float、
double、blooean。用时注意所占字节,数字注意精度。汉字占用与char类型相同。
char、byte、int、long、float、double、short初始值为0,blooean初始值为false,引用类为null。
每个java程序都至少要声明一个类,关键字是class。格式为:class加空格加类名称,关键字new创建类的新对象。例:
Scanner input = new Scanner(System.in)
本行中创建了一个新变量input其类型为Scanner,即调用Scanner类。
注:类名称首字母一般大写且与内容相关,public类与java文件同名
2.标识符
标识符组成:大小写字母、数字、’_’、’$’。不能以数字开头,不能含有空格,有大小写区分。
3.方法
方法(method):一个类有一个或多个方法,但只能有一个main方法。
访问修饰符:private、public
区别:
private只能由声明他们的类访问
public可由任意类访问
输出
输出指令为System.out.print (printf \ println)
print为正常输出
printf可用来显示格式化数据:格式化指令符
println为自动换行。
\n:换行符
\t:水平制表符
\r:回车符
运算符
- 算术运算符、取模运算符(%):+、-、*、/、%
- 自增自减运算符:++、–
- 关系(比较)运算符:< 、> 、 == 、 != 、<= 、>=
- 位运算符:&、|、~、^(异或)
- 逻辑运算符:&&、||、!
- 移位运算符:>>、<<、>>>
- 三目条件运算符:
三目条件运算符是一个逻辑判断与赋值运算符的组合。语法如下:
<逻辑表达式> ? <表达式1> : <表达式2>
当逻辑表达式为真时,表达式1有效;当逻辑表达式为假时,表达式2有效。
逻辑运算符(&&、||)与位运算符(&、|)的区别:
1. 逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
2.逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行
运算符优先级和结合律
|运算符 |结合律 |类型 |
++、- -|从右到左 |一元 |
*、/、%|左到右|乘性
+、-|左到右 |加性 |
<、>、<=、>=、==、!=|左到右|比较关系关系|
&、|、^、&&、||、 |左到右 |逻辑关系
控制语句、
Java中的程序语句
基本三种语句
1. 顺序语句:按前后顺序执行的语句
2. 分支语句:选择部分执行的语句
3. 循环语句:循环执行的一块语句
结合方式
1. 简单的将上一个语句的出口和下一个语句的入口连接起来
2. 控制语句嵌套,一条控制语句可以在另一条语句中
将多个语句按照恰当算法结合起来,就构成了程序 。
if…..else
if(布尔条件语句){
执行语句}else if(布尔条件语句){
执行语句}else
控制语句如果为真则执行,否则进行下一条判定,直到最后一个else。
*if和if…else后不加“;”
while、 do…..while
while(布尔条件语句){
执行条件语句}
当布尔条件语句为真则执行,否则退出语句
do{
执行语句}while(布尔条件语句)
如果布尔条件语句为真,则继续执行,否则退出
do…..while和while的区别:do….while是先执行一次后判断,while是先判断后执行。
如果while不能判断为假,则会无限循环。
for
for(初始化循环因子;布尔条件语句;循环因子改变){
执行语句}
当布尔条件语句为真则执行,然后执行循环语句改变,然后在进行循环语句。
for的初始化循环因子不能在for外使用,for中三个语句都可省略,但” ; “不可省略。
switch ……case(default)
switch(<整形表达式>或<字符串表达式>){
case(跟switch后相同类型的常量)
执行语句 break;
case(跟switch后相同类型的常量)
执行语句 break;
case(跟switch后相同类型的常量)
执行语句 break;
default:
执行语句;
比较switch和case后,如果相同则执行,如果都不符合则执行默认分支default后。
一般将默认分支放最后,默认分支后break可以省略。
break、continue
break:用于从当前循环退出,执行控制语句后的第一条语句。
continue:用于结束本循环中其余语句,继续下一次循环
java三大要素:继承、封装、多态
继承
每个类只能继承一个类,object默认为所有类的父类
关键字:
1.extends:表示继承,用法为<子类>extends<父类>
2.super:表示当前类的父类,用super()表示调用父类的构造方法
3.this:表示当前类的对象,还可以使用this()表示调用当前类的构造方法
4.fanil:被fanil修饰的变量为常量,被fanil修饰的方法不能被重写的,被fanil修饰的类不能被继承
加载过程:
1.加载main方法
2.将父类的static方法分配执行入口
3.main进栈
4.加载子类——->加载父类
上转型对象:将子类实例化为父类,失去了子类新增的方法,和新增的变量,可以操纵父类的对象和方法,
如果方法被重写,调用的是子类重写的方法,上转型对象可以再次强制转换为子类
方法的重写以及隐藏:
隐藏即父类方法被子类覆盖。
方法的重写规则:
1.参数个数及对应类型必须相同
2.不得修改返回值
3.不得降低访问级别
多态
当一个父类存在多个派生类的时候,并且每个派生类都重写了父类中的某个方法,那么父类的该方法在不同的子类中就出现了不同的行为,这就是多态。
关键字abstract:由abstract修饰的方法叫抽象方法,非抽象类子类必须实现抽象父类的所有抽象方法,有abstract方法必须则类必须为abstract类,abstract类中可以有非抽象方法,抽象类不能被实例化,abstract只关心此方法是否存在,而不关心此方法是否被实现。
接口(interface):接口中所有方法都为抽象方法,关键字implements。<子类>
接口和父类:接口指一个方法,父类指一个类别。一个子类只可以有一个父类但可以有多个接口。
封装 ##
把对象和过程包围起来,实际上是将对象隐藏起来,使用者只能通过已定义的接口进行访问,适当的封装可以让程序更便于理解,也使程序更加安全。
封装的访问级别:
public:可被当前类、同一个包中其他类、不同包中的子类、不同包中的非子类访问
protected:可被当前类、同一个包中其他类、不同包中的子类访问
友好的(即什么都没有):可被当前类、同一个包中其他类访问
private:只可被当前类的内部访问
Math类
Math类位于java.lang包中,可以直接使用,无需引入。
常量:
Math.PI:原周长与直径之比π
Math.E:自然对数的基值e
常用方法:
abs(x)————-x的绝对值
ceil(x)————-x四舍五入
floor(x)————x向下取整
top(X)————-x向上取整
exp(x)————-e^x
max(x,y)、min(x,y)—取较大较小值
sqrt(x)————-x的平方根
pow(x,y)———–x的y次幂
cos、tan、sin——-三角函数
log(x)————–x取对数
String类
**创建方式:
1.String str = “”;
2.String str = new String();
3.String str = new String(“”);
4.char cs[] = {};String str = new String(cs)
5.String str = new String(char[],int start,int end)
cs中从start到end
常用方法:
length();String的长度
equals(str);比较和str是否相同
endWith(str)、startWith(str):判断是否以str开头、结尾
compareTo(String str):和str按字典顺序比较;相同返回0,大则返回正数,小则返回负数。
indexOf(str):检索str第一次出现的位置,如果没有则返回-1.
lastIndexOf(str):检索str最后一次出现的位置,没有则返回-1.
indexOf(str,start):检索str从start开始第一次出现的位置,没有则返回-1.
lastIndexOf(str,end):检索str到end位置最后一次出现的位置,没有则返回-1
substring(start,end):截取从start到end位置的字符并返回。
replaceAll(old,new):以new替换old。
trim(str):去掉起始和结束位置的所有空格并返回余下字符串
split(str):以str分割当前字符并返回字符串组
封装类 ##**
基本数据类型的封装类:
int————–>Integer
byte————>Byte
short———–>Short
long———–>Long
boolean——->Boolean
char———–>Character
double——–>Double
float———–>Float
基本数据类型封装类的常用方法:
1.字符串转化为封装类:封装类.parse封装类(<目标字符串>)
2.封装类转换为字符串:String.valueOf(<目标>)=====>注:目标必须符合
Character常用方法:
isDgit(ch):是否是数字。
isLetter(ch):是否是字母。
isLetterOrDgit(ch):是否是字母或者数字。
isLowerCase(ch):是否是小写字母。
isUpperCase(ch):是否是大写字母。
toLower(ch)—toUpper(ch):转换为小写大写
isSpaceChar(ch):判断是否是空格