循环结构
2.1 while
//while格式
/* while(boolean表达式){
* 表达式成立时 执行的代码块
* }
*/
int k=100;
while(k<1000){
int a=k%10;
int b=k/10%10;
int c=k/100;
int sum=a*a*a+b*b*b+c*c*c;
if(sum==k){
System.out.println(k);
}
k++; //迭代语句
}
2.2 for
循环三要素:循环条件 循环代码 迭代语句
/*for格式:
*for(初始化语句;条件表达式;迭代语句){
* 循环执行的代码
*}
*初始化语句:定义变量 给变量赋值的语句
*
* */
int a=1;
for(System.out.println("初始化语句a="+a); a<=10; System.out.println("迭代语句:::a="+a)) {
System.out.println("循环执行的代码:::a="+a);
a++;
}
for和while完全等价
int b=1;//初始化语句
while(b<10) {
System.out.println("b="+b);
b++;//迭代语句
}
int c=1;//初始化语句
for(;c<10;) {
System.out.println("c="+c);
c++;//迭代语句
}
//和上面 完全相同:
for(int d=0;d<10;d++) {
System.out.println("d="+d);
}
//初始化语句 迭代语句 条件表达式都可以省略; 条件表达式不写 默认是true
2.3 do while
/*格式:
* do{
* 循环体
* }while(条件表达式);
*
* while(条件表达式){
* 循环体
* }
*
* */
//while------------------------------
int n=11;
while(n<=5) {//先判断条件 条件成立再执行
System.out.println("while::::n="+n);
n++;
}
//do while--------------------------------
n=11;
do {//先执行 再判断
System.out.println("do while::::n="+n);
n++;
}while(n<=5);//条件成立,再执行
//当开始条件就成立时 while和do while没有区别
//do while保证 条件不管是否成立 循环体至少执行一次
break和continue
break:
使用场景1:用在switch中:结束switch结构
使用场景2:用在循环中:结束本层for循环
continue:
使用场景:用在循环中:结束本次for循环 继续n++ 下次循环
for (int i = 0; i <=5; i++) {
for (int j = 0; j <=5; j++) {
if(j==3) {
//break;//结束的是内层for循环
}
System.out.println(i+":::"+j);
}
if(i==3) {
break;//结束的是外层for循环
}
}
//面试题:怎么在内层for循环中结束外层for循环-----------
for (int i = 0,k=0; i <=5; i++) {
for (int j = 0; j <=5; j++) {
if(j==3) {
k++;
break;//结束的是内层for循环
}
System.out.println(i+":::"+j);
}
if(k!=0) {
break;
}
}
//判断一个数是不是质数---------------------------
{
int n=1;
int m;
for (m=2;m<n;m++) {
if(n%m==0) {
break;
}
}
if(m==n) {
System.out.println(n+"是质数!");
}
}
//或
{
int n=31;
boolean b=true;
for (int m = 2; m < n; m++) {
if(n%m==0) {
b=false;
break;
}
}
if(b&&n!=1) {
System.out.println(n+"是质数!");
}
}
阶段总结
/*
*1 jdk jre jvm
* jvm java虚拟机
* jre=jvm+java基础类库
* jdk=jre+开发工具(javac.exe)
*2 jdk环境变量配置
*3 数据类型: byte short int long char float double boolean
*4 数据类型转换: 1 :高精度变量=低精度数据; float f=1;
* 2: byte short char类型的变量=int常量值; byte b1=1;
* 3: 低精度变量=(低精度变量的类型)高精度数据;
*5 运算符:
* 算术运算符: + - * / % ++ --
* 比较运算符: > >= < <= != ==
* 赋值运算符: = += -= *= /= %=
* 逻辑运算符:&& & | || ^ !
* 位运算符: & | ^ << >>
* 三元运算符: boolean?值1:值2
*
*6 流程控制
* 顺序结构:
* 选择结构:if/else switch
* 循环结构:while for dowhile
* 跳转:
* */
补充1:&&和&的区别
/*&&和&:两边只要有一个false结果就是false
*||和|:两边只要有一个true结果就是true
*
*&和&&的区别:
*相同之处:
* 都可以作为逻辑运算符:结果一样: 两边只要有一个false 结果就是false
*不同之处:
* 1 &单与 可以作为位运算符 操作的是整数二进制
* 2 &&和||会逻辑短路:当通过第一个式子就知道结果时 不再执行第二个式子 直接给出结果
*
*铁打的面试题回答技巧
*a和b的区别:
*1 概念简述:a是xx b是xx
*2 a和b的相同之处
*3 a和b的不同之处
* 3.1:
* 3.2:
* 3.3:
* */
补充2:++参加混合运算
// ++ 和--的混合运算------------------------
{
int a=5;
int b;
b=(++a)+1+(a++)+(--a)+a+(a--);
//a=5;
// b= 6 + 1+ 6 + 6 + 6+ 6
//++在前 先自增 拿自增后的值参加本次运算
//++在后 先拿当前值参加本次运算 然后自增
System.out.println(a+":"+b);//5:31
}
{
int a=1;
a=a++;//int temp=a; a++;a=temp;
//a=a;a++;错误认知
int b=a++;// b=a; a++;
//int temp=a; a++; b=temp;
System.out.println("a="+a+";b="+b);//a=2;b=1
}