跳转控制语句
break ; looper循环或者switch中用 (中断,结束...)
continue:继续 (循环中用,结束当期循环之后,立即进入下一次循环了)
return ; // 结束方法用的 (很少单独使用)
什么是方法(函数)
Switch语句
格式: switch(表达式或者某个变量值) {
case 值 1:
语句1;
break ;
case 值2:
语句2:
break ;
...
default:
语句n;
break ;
}
执行流程*
switch接收结果,
1)接收的结果和case后面的值1进行对比,成立,执行语句 1,break 结束语句;
2)值1和switch接收的结果不匹配,和值2进行比较,成立,执 行语句2, break,结束语句;*
3)... 如果上面case都不匹配,执行default语句,语句n,break ,结束..
switch语句中的注意事项
1)关于switch中的case语句后面只能常量,不能是变量
2)在书写switch语句的标准结构,不忘了break,如果语句中忘了书写break,会出现一
个现象:case穿透! 在有的需求里面利用 case穿透 来完成一些需求;
3)关于switch语句的结束条件
a)要么遇见break结束
b)程序默认执行到末尾
4)关于default语句可以在switch语句中的任何位置,不影响语句的执行流程;
不管在任何位置,只要case语句都不匹配,执行default; 如果default语句的末尾,break可以省略
循环结构语句之for
格式 for(初始化语句;条件表达式;控制体语句或者步长语句){
循环体语句;
}
执行流程
1) 初始化语句:给变量赋值 (只执行一次)
2)然后执行条件表达式,看其是否成立,如果成立,执行的是循环体语句------>再次回到控制体语句或者步长语句--->变量自增或者自减
3)再次执行条件表达式,是否成立,成立,继续循环体语句---->再次回
到控制体语句或者步长语句---->变量自增或者自减 ....
4)一直执行到条件表达式不成立,for循环结束;
循环求和思想
两个加数:
前面的这个加数:就是求和结果变量sum,从0开始 后面的这个加数:就是1-10的数据;
使用步骤:
1)定义一个最终结果变量sum,从0开始记录
2)使用for(初始化语句;条件表达式;控制体语句){
//循环体语句
//先取出来每一个数据
使用结果变量就是上面的数据求和,然后
再赋值给最终结果变量;
}
3)输出sum即可
while循环
while循环的格式
初始化语句;
while(条件表达式){
循环体语句 ;
控制体语句或者步长语句;
}
执行流程:
首先,先初始化语句,对变量赋值;执行条件表达式,是否成立;成立,则执行循环体语句,依次控制体语句进行变量控制 --->再次判断条件表达式是否成立,成立,执行循环体语句--->控制体语句进行变量控制... ...
当条件表达式不成立,while循环结束;
注意事项:控制体语句不要忘了,否则死循环;
初始化语句;
while(条件表达式){
循环体语句 ;
控制体语句或者步长语句;
}
执行流程:
首先,先初始化语句,对变量赋值;执行条件表达式,是否成立;成立,则执行循环体语句,依次控制体语句进行变量控制 --->再次判断条件表达式是否成立,成立,执行循环体语句--->控制体语句进行变量控制... ...
当条件表达式不成立,while循环结束;
注意事项:控制体语句不要忘了,否则死循环;
循环语句之do-while循环
格式
初始化语句;
do{
循环体语句 ;
控制体语句 ;
}while(条件表达式) ;
初始化语句;
do{
循环体语句 ;
控制体语句 ;
}while(条件表达式) ;
死循环
第一个格式
for(;;){
循环体语句;
}
第二个格式:while(true){ //死循环格式中使用比较多
循环体语句;
}
for(;;){
循环体语句;
}
第二个格式:while(true){ //死循环格式中使用比较多
循环体语句;
}
.
Math的随机数使用
/*
*
jdk提供了类:java.lang.Math
java.lang包下的类不需要导包
针对数学运算的工具类,提供了很多的方法;
获取伪随机数,取值范围:[0.0,1.0)
public static double random():
断点调试程序
在方法中的有效代码第一行打断点,在行号上直接单击即可
使用debug启动Java应用程序
右键---选择 debug run xxx类名.main :debug启动这个类的main方法
for循环嵌套
for(初始化语句1;条件表达式1;控制体语句1){
循环体就是for循环语句
for(初始化语句2;条件表达式2;控制体语句2){
循环体语句;,,,
}
}
循环体就是for循环语句
for(初始化语句2;条件表达式2;控制体语句2){
循环体语句;,,,
}
}
Java中的方法
方法:给某段代码,使用{}包裹起来,给这个{}起一个名字,方法名,就可以有相同业务逻辑代码,直接使用方法名调用,提高代码的复用性;
注意事项:写代码,以后不能把所有的东西都放在main方法中写
方法定义格式
有具体返回值方法的定义格式
固定写法:
public static 返回值类型 方法名(形式参数类型1 参数名1,形式参数类型2 参数名2,....){
//完成功能业务逻辑
...
return 具体结果;
}
有具体返回值类型的方法的调用格式
在main方中
赋值调用
接收的结果类型 变量名 = 方法名(实际参数1,实际参数2,...) ;
实际参数:直接赋值或者main中键盘录入
没有具体返回值类型的方法定义和调用
当某个业务逻辑里面比如完成的数据的直接输出,展示数据---- System.out.println("xxx") ;
或者: 业务逻辑中可能数据某个数据在进行排序 数据交换
没有没有具体的结果是直接输出在控制台上,
此时java提供了一个关键字 void,代替返回值类型(Java定义方法语法的要求:需求没有具体返回结果,就是用void)
定义格式:
public static void 方法名(形式参数类型1 参数名称1,形式参数类型2 参数名2,....){
}
调用格式:单独调用
方法重载
什么是overload?就是方法重载
方法重载:为了某个功能扩展性,多个方法方法名可以相同(完全相同),参数列表不同,与
返回值无关
参数列表不同
1)参数个数不同
2)参数类型不 同
3)考虑参数类型的顺序
数组:
就是容器,这个容器 "只能存储同一种类型的元素"
在数组中定义格式:动态初始化和静态初始化
动态初始化:自己定义数组的长度,数组的元素有系统(jvm)默认分配
格式:
数据类型[] 数组名称 = new 数据类型[数组长度] ; 推荐第一 种
数据类型 数组名称[] = new 数据类型[数组长度] ;
举例
int[] arr = new int[3] ;
int arr[] = new int[3] ;所有的数组有一个特点:数组名称[角标或者索引值]:访问数组的元素 ,角标值/索引值从 0开始计算
数组静态初始化
数组的定义格式第二种
静态初始化:直接我们自己给定的了元素内容,数组的长度由系统默认分配
原生的格式写法:
数据类型[] 数组对象名 = new 数据类型[]{元素1,元素2,元素3.....} ;
数据类型 数组对象名[] = new 数据类型[]{元素1,元素2,元素3.....} ;
举例
int[] arr = new int[]{1,2,3} ;
int arr[] = new int[]{1,2,3} ;
静态初始化的简写格式
数据类型[] 数组对象名 = {元素1,元素2,元素3.....} ; 推荐的写法
数据类型 数组对象名[] = {元素1,元素2,元素3.....} ;
int[] arr = {1,2,3} ;
int arr[] = {1,2,3} ;
在数组中有一个特有的属性:length
数组名称.length:获取数组长度
数组中的最大索引值: 数组名称.length-1
java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常 :访问了数组中的不
存在的索引就会出现这种问题;
异常:Exception
编译时期异常:idea写代码的,编译通过不了,无法运行; 语法有问题;
运行时期异常: 开发者在编写代码的时候,大部分逻辑性不严谨,比如: 数组的5个元素,角标最大4,你访问角标5
数组的其他基本应用
最值问题:最大值
数组元素查表法 :通过数组名称[索引值]确定元素
基本元素查询:查询数组中某个元素的角标值
int[] arr = {87,56,13,24,17};
弊端:
每次查询元素的时候,都是从头查到尾
冒泡排序
两两比较,将较大的值往后放,第一次比较完毕,最大值出现在最大索引处;
依次这样比较,可以得到排好序的数组;
依次这样比较,可以得到排好序的数组;
规律
1)两两比较,将较大的值往后放,
2)第一次有0个不比
第二次有1个不比
....
每次比较,就会减少一次比较
比较的次数:数组长度-1次
1)两两比较,将较大的值往后放,
2)第一次有0个不比
第二次有1个不比
....
每次比较,就会减少一次比较
比较的次数:数组长度-1次
面向对象的思想特点以及特征
什么是面向对象? Java语言 ---对比 面向过程: 代表 c语言
面向对象的思想特点是什么?
1)更符号生活中的思想行为习惯
2)让复杂的事情简单化
3)从执行者变成了指挥者
面向对象的三大特征
封装,继承,多态 (整个java最重要的)
面向对象语言被语言被设计出来的理念
不断的去创建对象,使用对象,指挥对象做事情!
什么是类
类,是能够描述现实世界事物一组属性和行为的集合;
类和事物的关系:一一对应的关系 事物:一定现实真实存在的
基本类型作为形式参数和引用类型 (数组,类,接口) 作为形式参数的特点?
基本类型作为形式参数,形式参数改变不影响实际参数;
引用类型作为形式参数,形式参数的改变直接影响实际参数;
类 描述现实世界事物的一组属性和 行为,代码体现出来对某个事物的描述 以及在对应的主方法中测试。
学生类:
学生有姓名,年龄,性别属性
学生主要行为就是学习,还可以玩游戏,
使用面向对象的方式描述学生类并且定义一个StudentTest类,在主方法中测
试学生类
封装:
就是将显示世界事物的属性隐藏了(加入一个关键字private),
私有的,无法直接访问的,对外数据的安全性!(外界不能访问的)
对外提供一个方法,公共的(public)访问方法(setXXX()/getXXX())
注意事项:
以后在书写的代码的时候,写一个类,描述真是存在事物的属性的时候, 需要属性(英文单词字母全部小写)全部加入private