day7:
1.switch语句
格式 switch(表达式或者某个变量值)
{
case 值
语句1:
break;
case 值2:
语句2:
break;
........
default:
语句n:
break;
}
执行流程:
switch接收结果,
1)接收的结果和case后面的值进行比对,成立,则执行语句1,break,结束语句;
2)值1和switch接收的结果不匹配,和值2进行比较,成立,执行语句2,break,结束语句;
3)(重复上面的对比方法)
如果上面的case都不匹配,执行default语句,语句n,break,结束
注意事项:
switch语句中的注意事项
1)在switch中的case语句后面只能是常量,不能是变量(体现java是一种强类型语言)
2)在书写switch语句的标准结构时,不要忘记break(在语句中忘写break,会出现一个现象:case穿透)
3)switch语句的结束条件
/1.遇见break结束
/2.程序默认执行达到末尾
4)default语句可以在switch语句中的任何位置,不影响语句的执行流程
只要case语句都不匹配,执行defaul;
如果default在语句末尾,break可以省略;
2.循环结构之for
将一句话重复明确次数在程序中;
1.阅读性差
2.代码的冗余度高(重复性太大)
计算机语言提供了流程语句之循环语句
明确循环次数的优先for循环
格式
for(初始化语句;表达式;控制体语句或步长语句){
循环体语句;
}
执行流程
1)初始化语句:给变量赋值(只执行一次)
2)执行条件表达式,看是否成立,如果成立,执行循环体语句
回到控制体语句或步长语句
变量自增或自减
3)重复
4)执行到条件表达式不成立,for循环结束;
public class IfDemo{
public static void main(String[] args){
System.out.println("我爱java") ;
System.out.println("我爱java") ;
System.out.println("我爱java") ;
System.out.println("我爱java") ;
System.out.println("我爱java") ;
System.out.println("--------------------------------------------") ;
for(int x=1; x<=5;x++){
System.out.println("我爱java") ;
}
}
}
循环求和思想
求 1—10的数据之和:
求和思想
定义一个变量: 从0开始 sum
0+1=1
1+2=3
3+3=6
6+4=10
.........
即:public class ForDemo {
public static void main(String[] args) {
int sum = 0 ; for(int x = 1 ; x <=10 ; x ++) {
sum+= x // sum = sum + x;
}
System.out.println("1-10的数据之和是:"+sum);
}
}
求:在控制台输出所有的水仙花数
水仙花数
水仙花指的是三位数,而且这个三位数的每一个位上的立方相加就是 当期数据本身;
举例:153 = 1 * 1 * 1 + 5*5*5 + 3*3*3
153 % 10 = 3 ;---确定个位的数据
153 / 10 % 10 = 5 --- 确定十位的数据
153 /10 /10 %10 = 1 --- 确定百位上的数据
1)三位数,明确了范围 100-999---使用for循环
2) 确定每各位的数据本身的值:
定义三个变量,分别代表个位,十位,百位数据本身
int ge = 当前这个数据 % 10 ;
int shi = 当前这个数据 /10 %10 ;
int bai = 当前这个数据 /10/10 % 10 ;
3)for循环中加入逻辑判断
如果当前x == (ge*ge*ge)+(shi*shi*shi)+ (bai*bai*bai),
满足条件,直接输出x
day8
1,常见的死循环
for和while
while在死循环中使用较多
死循环, 利用死循环完成一些需求,死循环中肯定需要使用逻辑判断; 当达到某种条件的时候,应该结束死循环;
死循环的两种格式
*第一个格式
for(;;){
循环体语句;
}
第二个格式:
while(true){ //死循环格式中使用比较多
循环体语句;
}
Math的随机数使用
jdk提供了类:java.lang.Math
java.lang包下的类不需要导包
针对数学运算的工具类,提供了很多的方法;
获取伪随机数,取值范围:[0.0,1.0)
public static double random():
快速使用:
Math.random()---获取一个随机数
猜数字
1)需要产生一个随机数:java.lang.Math 里面的功能random()产生一个1-100之间的随机数
2)创建一个键盘录入对象,录入int类型
3)录入的数据要和Math里面产生的1-100之间数据进行对比,
如果大了,提示 "你要猜的数据大了"
如果小了,提示"你要猜的数据小了"
如果一致,提示"恭喜您,猜对了"
结束死循环,break ;
for循环嵌套
九九乘法表
3流程控制语句
break
continue
两个都在循环中使用居多;
break:结束中断,结束循环语句也可以结束switch语句,应用范围比continue大
continue:仅仅在循环中使用,表示"结束当期循环,立即进入下一次循环"
retur
就是结束方法的,一般很少在方法中单独使用;
结合有具体返回值类型的方法的使用(有具体返回值类型,必须有结果,否则报 错),结束之前必须有一个结果
return----引入Java中的方法
方法:给某段代码,使用{}包裹起来,给这个{}起一个名字,方法名,就可以有相同业务逻 辑代码,直接使用方法名调用,提高代码的复用性;
注意事项: 写代码,以后不能把所有的东西都放在main方法中写
方法定义格式
有具体返回值方法的定义格式
固定写法:
public static 返回值类型 方法名(形式参数类型1 参数名1,形式参数类型2 参 数名2,....)
{
//完成功能业务逻辑
...
return 具体结果;
}
有具体返回值类型的方法的调用格式
main方中
赋值调用
接收的结果类型 变量名 = 方法名(实际参数1,实际参数2,...) ;
实际参数:直接赋值或者main中键盘录入
day9
1.没有具体返回值类型的方法定义和调用
当某个业务逻辑里面比如完成的数据的直接输出,展示数据
或 业务逻辑中可能数据某个数据在进行排序 数据交换
还有遵循昨天有具体返回值类型的方法定义格式:
这种方法在定义的时候
没有没有具体的结果是直接输出在控制台上,
此时java提供了一个关键字 void,代替返回值类型(Java定义方法语法的要求:需 求没有具体返回结果,就是用void)
格式定义:
public static void 方法名(形式参数类型1 参数名称1,形式参数类型2 参数 名2,....){
}
完成如下一个操作
键盘录入一个数据n,n为int类型
控制台输出 nn乘法表:
未定义方法:
定义方法:
方法重载
overload 方法重载:
为了某个功能扩展性,多个方法方法名可以相同(完全相同),参数列表不同,与 返回值无关
参数列表不同
1)参数个数不同
2)参数类型不同
3)考虑参数类 型的顺序
public static double open(double a,int b){}
数组
数组一种容器 ,容器只能存储同一种类型的元素
数组的定义格式
数组类型[ ] 数组名称;
int [ ]arr; //定义了一个int类型的数组arr变量
数组类型 数组名称[ ];
int arr [ ]; //定义了一个int类型的arr数组变量
初始化;两种
动态初始化;
数据类型[] 数组名称 = new 数据类型[数组长度];
int[] arr = new int[3] ;
int arr[] = new int[3] ;
静态初始化;
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2....} ;
简写格式
数据类型[] 数组名称 = {元素1,元素2....} ; i
nt[] arr = {11,22,33} ;
创建一个数组的注意事项
初始化的时候不能动静结合: 不能够同事动态和静态初始化,只能有一种
遍历一个数组的步骤
day10
数组的其他基本应用
最值问题:最大值
数组元素查表法 :通过数组名称[索引值]确定元素
基本元素查询:查询数组中某个元素的角标值 int[] arr = {87,56,13,24,17};
弊端: 每次查询元素的时候,都是从头查到尾
高级数组中的元素:二分搜索法(折半查询) :高级查询算法
方法中基本类型作为参数传递和引 用类型作为参数传递的区别
基本数据类型作为方法参数传递的时候,传递的是值,并不是基本数据类型所存的地址。
引用类型作为方法参数传递的时候,传递的是引用,当我们通过引用改变变量的内容的时候,由于两个对象的地址指向同一块内存区域,所以可以成功改变值。
数组的高级排序算法 :冒泡排序
思想:两两比较,较大的值往后方法,第一次比较完毕,最大值出现在最大索引处
遍历:
冒泡:
面向对象的思想特点以及特征
面向对象基于面向过程,面向过程的代表:C语言;
面向对象基于面向过程
面向对象思想特点:
1)更符号生活中的思想行为习惯
2)让复杂的事情简单化
3)让我们从执行者变成指挥者
举例:生活中的例子
面向对象的三大特征:
封装,继承,多态
什么是类
类, 是能够描述现实世界事物一组属性和行为的集合;
事物: 一定现实真实存在的
类和事物的关系:一一对应的关系
Java中规定,需要定义类描述这个事物 ,Java中最基本单元就是类
代码体现 描述哪一个事物
class 类名{ //类名:满足标识符的规范: 见名知意 }
day11
基本类型作为形式参数和引用类型 (数组,类,接口) 作为形式参数的特点?
基本类型作为形式参数,形式参数改变不影响实际参数;
引用类型作为形式参数,形式参数的改变直接影响实际参数;
权限修饰符--- >private
如果学生的年龄,手机价格,,赋值的时候可以随便赋值,可能出现非法数据"负数"
描述事务的时候,需要定义类,类中的所有的成员变量(现实世界事物的属性) ,必须都是私有化private;
封装
就是将显示世界事物的属性隐藏了(加入一个关键字private),私有的,无法直接访问的,对外数据的安全性!(外界不能访问的)对外提供一个方法,公共的(public)访问方法(setXXX()/getXXX())
注意事项:
以后在书写的代码的时候,写一个类,描述真是存在事物的属性的时候, 需要属性(英文单词字母全部小写)全部加入private