java 3.4.5
一. Java三大流程控制
1.顺序控制。依次执行我们的代码。
2.条件控制。{a.目的。在程序执行的过程中,对一些不可预知的流程进行一个预先的判断。
b.条件。只会有真假两种可能。}
*1四中条件控制手段(a.可以是表达式,常量表达式和包含着变量的表达式 b.boolean类型 c.田间控制语句的尖括号可以省略,当我们条件成立时,仅需要执行一行代码时)
a.if语句。结构:if(条件){实现逻辑代码}
b.if……else语句。If(条件){实现逻辑}
else{实现逻辑}
c.if……else if(后面可以跟N个)当执行到匹配与剧之后则会直接跳出。
d.switch case语句。结构:
switch(判断值)/*括号中的值一般为整形或者char型,当为char形时,则先转化成ASCII码进行比较*/{
case 值/*只能是常量或者是常量表达式*/
break;/*可以省略,作用是跳出switch代码块,如果省掉,当执行到匹配语句之后会,会继续执行后面的语句,直到执行完语句或者遇到break*/
.
.
.
.
Default/*可以放到条件语句中的任何地方(注:当放到开头时,执行完之后,只有遇到break时才跳出语句,否则一直执行后面语句,因此,此时在后方break,解决问题。当放到结尾时,执行完之后,直接跳出语句),当没有匹配不到的语句时,则执行其后面语句*/
*2条件控制语句的嵌套:条件控制语句之间可以互相嵌套,虽然不限定层数不要超过3层。
3.循环语句
a.while语句。结构:while(循环条件。可以是变量,也可以是字面常量,表达式(常量表达式),包含变量的表达式)
b.do…… while语句。结构:
do{实现代码;}
while(循环条件)
注:先执行,后判断,至少执行一次。
c.for语句。结构:
for(循环变量;初始化;循环条件判断;循环变量的改变)
注:循环变量可以定义多个,循环变量之间用;隔开。
d.foreach语句。不是一个常规的java提供的循环方式,他只是Java提供的一种语法糖(对基本的语法提供一种简化)对一种循环方式的命名,常规循环的简化方式。
*两个关键字
continue:跳出档次循环。
break:跳出整个循环。
二.数组
1.定义:用来一次性保存相同类型元素的这样一种数据结构
2.基本知识点:
1. new:用来创建一个对象
2. 定义数组保存元素:类型 [ ] 数组变量名称=new 类型[数量]
3. 访问数组元素index(数组保存元素的索引),从0到(length-1)。但仅是定义,却没有存发那个数值,则系统在以下各种书默认存储的是:
bytle, short, long, int:0;
double, float:0.0;
char ’ ‘
注:数组元素的访问 arr [index(可以是常量,也可以是表达式)]
注:1.数组中放的是元素的地址。2.引用数组名.length也已直接引用数组的长度。
3.维度
a. 一维数组
*声明:类型 [ ] 数组变量名称例:int [ ] arry(in tarry [ ])
*初始化:a.动态初始化。我们在定义一个数组和对数组进行赋值的操作,我们分开执行。
arry[0]=1
b.静态初始化。例:int [ ] arr=new int [ ] {1,2,3}
int [ ] arr= {1,2,3}
b.二维数组
*声明:类型 [ ] [ ] 数组变量名称
*初始化:a.动态初始化 int [ ] [ ] arry=new int [3 ] [ ](3表示二维数组的长度)
b.静态初始化 int [ ] [ ] arry={{1,2,3},{1,2,3,4}}
例1:
定义一个数组,对其赋值,然后以从小到大的顺序输出
例2:定义一个二维数组,并对其循环赋值
三.方法(在c语言中叫做函数)
*定义:实现一个功能的代码片段的封装。
结构: 【修饰符(可以是多个)】返回值类型 方法名称(形参列表){方法中实现的逻辑}
注:1.方法执行结束之后,返回值的类型,如果方法不需要返回值,则返回值类型为void,且方法里返回值需要用到return。
2.形参列表。形参列表是方法接受外部传入的数据的接受媒介。当我们定义一个方法之后,去调用方法的时候,一定要留心我们传递给方法的入参类型和数量,要一一对应。
四.面向对象(类)
Java是面向对象的语言,但是实质上是面向类的语言。类是封装对象的属性和行为的载体。具有相同属性和行为的一类实体,对象是类的实体化。。
1. 类与类之间的关系:
a. 关联关系(也是关系最弱的)
b. 继承关系(大多是树状结构)和上层类有相同行为,但却有自己独特的行为。
注:java不可以多继承,但是可以通过其它方式实现。
c. 聚合关系 类组合成另一个类
d. 实现关系 子类实现具体的行为
2. 对象,方法引用的构建书写
过程:在主方法后----创建对象(类+对象名=new +类名( ))---引用方法(当方法为void型时结构为 对象 +方法名(),当方法为其他类型时为 类型+方法名=对象+方法名())
五.关于变量的作用域:
成员变量:类的属性
局部变量:方法中定义的变量或者是方法的形式参数。
对于java语言来说,作用域控制是通过块来控制的.
块的概念: 一对{} 包裹,该代码片段就称为 一块.
对于某个块内定义的变量:
a.对于当前的块,不能再定义同名的变量,即使类型不同也不行。
b.对于当前的块,定义了某个变量,在块外不能够访问到块中定义的变量
c.如果存在块的嵌套:那么外层块定义的变量,在内层块中是可以访问到的.
六.方法参数的传递:
方法参数的传递来说,基本类型传递的是值。对于引用类型,传递的是引用.(传递的是地址)
七.构造方法(构造器)
1. 类中特殊的方法,对于定义来讲,他的方法名必须和类名一样,并且不返回任何值,主要不添加void。
2. 在new创建一个对象时,一定会去调用他的构造方法,但是我们如果没有自己添加自己定义的的构造器,编译器会帮助我们添加一个默认构造器。如果我们主动添加一个默认构造器,那么在创建对象时通过new 类名{ };会调用我们自己填骄傲的构造器。
结构:类名( ){
}
八.方法重载 overload
1. 对于同名的方法,具有不相同的参数列表,我们在访问的时候,通过调用方法传入不同的参数列表,就可以找到我们特定的方法。
2. 当我们定义多个重载的方法的时候,在编译阶段的话,编译器可以根据我们方法形式参数数量以及类型来区别不同的方法,执行阶段可以
根据我们调用的时候传入的参数列表,仅仅拥有不同的返回值类型,是不被视为重载的。
九.类的继承
子类继承或者说派生自父类。子类可以享有父类的方法。在初始化一个子类对象的时候,调用其中的方法,如果该方法中在父类也有定义,
并且参数列表不同,则调用到的是子类特有的方法。否则调用的是父类方法。
注意:如果仅仅是他们的返回值类型不同,则会出现编译错误。当返回值不同时,子类无法覆盖父类的。