java的或语句_java 基本语法语句

1.选择结构if语句

if(表达式1){

语句体1;

}else if(表达式2){

语句体2;

}else if(表达式3){

语句体3;

}

...

else{

语句体n+1;

}

执行流程:

计算出表达式1的值

如果值为true执行语句体1

如果值为false计算表达式2的值

如果值为true就执行语句体2

如果值为false就计算表达式3的值

如果只为true就执行语句体3

如果值为false就计算表达式n的值

如果值为true就执行语句体n

如果值为false,表示所有的情况都不成立,就执行else里面的语句体n+1

2.选择结构switch语句

switch(表达式){

case 常量值1:

语句体1;

break;

case 常量值2:

语句体2;

break;

case 常量值3:

语句体3;

break;

...

default:

语句体n+1;

break;

}

格式解析:

表达式:可以取char,int,short,byte,int JDK1.7可以取String值

case:拿表达式的值和case后面的常量值进行匹配

语句体:就是要干的事情,可以是一条或者多条语句

break:结束switch语句的

default:如果所有的case都不匹配,那么就执行default里面的语句体

执行流程:

首先计算表达式的值,然后和case后面的常量值进行匹配,如果匹配成功,那么就执行对应的语句体;直到遇到break或者执行

到程序的末尾才结束switch循环;如果所有的case都不匹配那么就执行default里面的语句体

注意事项:

case后面只能是常量值,不能是变量

break是可以省略的,如果省略的了,那么就会继续执行底下的语句体

default是可以省略的,如果省略了,那么就没有默认的处理语句

case的顺序可以是无序的,随意的摆放

if语句:

条件是boolean的时候更适合用if

针对范围判断的时候,更适合用if

switch语句:

更适合针对几个常量值进行匹配的

3.循环结构for语句

初始化语句:初始化一些值

判断条件语句:判断条件是否成立,语句是否可以继续执行

循环体语句:就是我们要反复执行的代码

控制条件语句:让循环在合适的时候结束,一般都是通过更改某些值决定的

for(初始化语句;判断条件语句;控制条件语句){

循环体语句;

}

执行流程:

A:执行初始化语句

B:执行判断条件语句,看其结果是true还是false

如果是true就继续执行C步骤

如果是false就结束for循环

C:执行循环体语句

D:执行控制条件语句

E:回到B步骤

注意事项:

for循环的判断条件语句的结果必须是boolean类型

for语句默认控制一条语句,如果想要控制多条语句必须有大括号

4.循环结构while语句

初始化语句;

while(判断条件语句){

循环体语句;

控制条件语句;

}

执行流程:

A:执行初始化语句

B:执行判断条件语句,看其结果是true还是false

如果是true就执行C步骤

如果是false就结束while语句

C:执行循环体语句

D:执行控制条件语句

E:回到B步骤

5.循环结构do...while语句

初始化语句;

do{

循环体语句;

控制条件语句;

}while(判断条件语句);

执行流程:

A:执行初始化语句

B:执行循环体语句

C:执行控制条件语句

D:执行判断条件语句,看其结果是true还是false

如果是true则回到B步骤

如果是false结束循环

6.三种循环语句的不同和使用场景

while和for的区别:当循环结束之后,初始化变量还需要继续访问就使用while;如果不需要继续使用就用for,因为for语句结束之后

在for循环的初始化语句初始化的变量都会消失

while和for语句的循环体语句想要执行,必须是判断条件语句返回true才可以

do...while语句不论判断条件是true还是false都会至少执行一次

for:更适合做固定范围内的循环

while:更适合求未知数的循环

do...while:更适合至少循环体语句需要被执行一次的循环

7.跳转控制语句

break:中断语句的意思,可以中断switch语句和所有的循环语句;离开使用场景没有任何意义

continue:结束本次循环,直接开始下一次循环;可以结束所有的循环语句;离开使用场景没有任何意义

return:结束当前的方法并将执行权交给上层调用者

1.方法

概述:就是完成特定功能的代码块,解决重复代码编写问题

格式:

修饰符 返回值类型 方法名(参数列表){

方法体;

return 返回值;

}

格式解析:

修饰符:先阶段就用public static

返回值类型:是由返回值类型决定的,接收方的变量类型要和返回值类型保持兼容

方法名:其实就是一个名字,为了调用特定功能代码块方便

参数列表:传递参数用的,方法体缺少什么就可以通过参数列表问调用者要什么

方法体:就是完成特定功能的代码块

return:结束方法并将返回值返回给调用者

返回值:就是最终的结果

有明确返回值的方法:你声明了对应的返回值类型,那必须返回一个对应的具体值

单独调用,没有任何意义

输出调用,意义也不大, 因为只是想输出,那么可以直接在方法体内部就输出了,不必再返回

赋值调用,意义所在,可以拿着返回值做后续的操作

没有明确返回值的方法:你可以使用return结束方法,但是不能返回一个具体的值

返回值类型是void

只能单独调用

方法注意事项:

方法和方法之间是平级存在的,不能相互嵌套

方法不调用不执行

方法参数有多个的时候,可以用,隔开

方法传递的参数要么是常量值要么是变量

你声明了对应的返回值类型,那必须返回一个对应的具体值

方法的重载:

java中允许一个类中存在多个同名的方法,但是这多个方法的参数个数和参数的对应类型不能一样

方法的重载和返回值类型是没有关系的

JVM是通过参数列表的不同来区分同名的方法

2.数组

概述:存储同一种数据类型的元素的一个集合(容器)

数组的特点:

数组一旦定义了长度,就无法更改

数组既可以存储基本数据类型的,还可以存储引用类型的值

数组的定义格式:

数据类型[] 数组名;:这样定义仅仅是声明了一个引用变量数组名,并没有开辟内存空间

数组的初始化:就是为数组中的每个元素开辟内存空间并赋初始化值

动态初始化:由我们指定数组的长度,由系统为每个数组元素赋初始化值

数据类型[] 数组名 = new 数据类型[数组的长度];

索引:从0开始编号,最大的索引是数组的长度-1

取值:数组名[索引]

赋值:数组名[索引] = 要被赋的值;

栈:存放局部变量,方法也是在栈中执行的;方法执行完毕之后局部变量要会消失,栈不会为其中的变量赋初始化值

堆:存放的都是new出来的东西;它会为里面的变量赋初始化值,基本数据类型的初始化值就是默认值,

引用数据类型的变量的初始化值都是null

静态初始化:由我们指定数组元素的值,由系统根据元素的个数决定数组的长度

数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2...};

简化格式:

数据类型[] 数组名 = {元素值1,元素值2...};

1.二维数组

概述:就是一个元素为一位数组的一个数组

格式1:

数据类型[][] 数组名 = new 数据类型[m][n];

m:表示这个二维数组有m个一维数组

n:表示每一个一维数组有n个元素

数组名[i][j]:获取第i+1个一维数组中的第j+1个元素

格式2:

数据类型[][] 数组名 = new 数据类型[m][];

m:表示这个二维数组有m个一维数组,每一个一维数组的长度可以动态的给出

int[][] arr = new int[3][];

arr[0] = new int[1];第一个一维数组的长度是1

arr[1] = new int[2];第二个一维数组的长度是2

arr[2] = new int[3];第三个一维数组的长度是3

格式3:

数据类型[][] 数组名 = new 数据类型[][]{元素值,元素值2,元素值3},{元素值11,元素值22,元素值33}};

简化格式:

数据类型[][] 数组名 = {元素值,元素值2,元素值3},{元素值11,元素值22,元素值33}};

2.面向对象

Scanner:我们知道这个类就是java提供给我们的,它具有键盘录入的功能

面向对象思想:可以将任何一个事物都封装成类,然后通过对象来体现

面向过程思想:遇到事情想着怎么去做

面向对象思想:遇到事情想着找谁去做

面向对象是基于面向过程,因为面向对象是需要封装的,肯定先开始分析,分析完成之后然后再封装,

以后我们自己活着别人再使用的时候,直接可以调用对应的类和方法即可

类:是某一事物的属性和行为的集合,还是java中的最基本的单位

首选分析一个事物的属性和行为:

属性:就是描述信息

行为:就是可以干什么事情

对应java类中:

属性-成员变量

行为-成员方法

想使用类,就需要创建对象:

类名 对象名 = new 类名();

对象名.成员变量;

对象名.成员方法;

java中的成员(成员变量和成员方法)

1.抽象类

概述:当某一事物的功能无法在父类中给出具体的实现时,可以在父类中定义出来这个功能,但是不给出方法体的实现。在java中

规定一个没有方法体的方法应该定义成抽象的方法,在java中又规定一个具有抽象方法的类必须定义成抽象类

抽象类的格式:abstract class 类名{}

抽象类的成员特点:

成员变量:变量,常量

构造方法:有构造方法,因为抽象类中有具体的成员,子类可能会访问使用

成员方法:

具体的方法:提高代码的复用性

抽象的方法:限定子类必须完成某个功能

抽象类如何进行实例化:

抽象类无法进行实例化,可以根据多态的思想,找一个子类继承这个抽象类,然后实现所有的抽象方法;然后实例化这个子类,

调用抽象的方法,这个叫做抽象类的多态

抽象类的特点:抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

抽象类子类的特点:子类要么实现所有的抽象方法,要么继续定义成抽象类

2.接口

概述:有某一部分功能不是某一事物都具有的,这些额外的功能应该定义在接口中,体现事物的扩展性

格式:interface 接口名{}

接口的成员特点:

成员变量:只能是常量,而且有默认的修饰符:public static final

构造方法:没有,因为接口中没有具体的实现

成员方法:只能是抽象的,而且有默认的修饰符:public abstract

接口如何进行实例化?

接口也不能直接实例化,可以根据多态的思想,创建一个子类实现接口,然后实现所有的抽象方法;然后实例化该子类,

调用接口中的方法,这个叫做接口的多态

类实现接口的格式:class 子类名 implements 接口名{}

接口的子类特点:

要么实现所有的抽象方法,要么继续定义成抽象类

3.类和接口以及彼此之间的关系

类与类:继承关系,单继承,不能多继承,可以多层继承

类与接口:实现关系,可以单实现,多实现,多层实现;还可以在继承一个类的同时实现多个接口

接口与接口:继承关系,单继承,多继承,多层继承

4.包

就是一个文件夹

带包的编译和运行:

手动式:

使用javac 源文件名.java

然后手动创建对应的文件夹,然后把编译好的class文件拷贝进对应的文件夹中

使用java 包名.类名运行

自动式:

使用javac -d . 源文件名.java

使用java 包名.类名运行

导包:当一个类中想使用两个相同类名不同包名的类时,只能选择导入其中的一个类,另外一个类需要使用全路径名进行区分

5.权限修饰符

public:修饰的成员,可以在任何地方进行访问

private:修饰的成员,只能在同一个类中进行访问

protected:修饰的成员,只能在子类中进行访问

默认:修饰的成员,只要在同一个包中都可以进行访问

6.成员内部类:可以访问外部类中的所有成员包括私有的,外部类想访问内部类的成员,必须创建内部类的对象、

还可以被static修饰,为了方便内部类的访问

静态内部类中不一定有静态成员,但是有静态成员的内部类一定是一个静态的内部类

访问内部类的成员访问格式:

非静态静态内部类的非静态成员:

外部类名.内部类名 对象名 = new 外部类名().new 内部类名();

对象名.成员;

静态内部类中的非静态成员:

外部类名.内部类名 对象名 = new 外部类名.内部类名();

对象名.成员;

静态内部类中的静态成员:

外部类名.内部类名.成员;

1.局部内部类

概述:在方法的内部创建一个类

局部内部类可以使用外部类的成员,包括私有的

外部类想访问局部内部类时,只能通过在方法内部创建对象,通过对象访问内部类的成员

2.匿名内部类

概述:就是没有名字的匿名子类对象

前提:存在一个类或者接口

格式:

new 类名或者接口名(){

要重写或者实现的方法;

}

本质:其实就是继承了类或者实现接口的子类匿名对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值