命令行参数
案例代码
class Draw {
public static void main(String[] args) {
String text=null;
int rows;
try{
text=args[0];//使用text保存第1个命令行参数
rows=Integer.parseInt(args[1]);//使用rows保存第2个命令行参数
}catch(Exception e){
//e.printStackTrace();
System.out.println("功能:根据指定的文本和行数打印图案");
System.out.println("用法:java Draw text rows");
System.out.println("参数\t描述");
System.out.println("text\t文本");
System.out.println("rows\t行数");
return; //结束main方法
}
for(int i=1;i<=rows;i++){//i表示第几行
//打印第i行
for(int j=1;j<=i;j++){
System.out.print(text);
}
System.out.print('\n');//换行
}
}
}
运行效果
break关键字
break关键字的作用:
1)跳出(结束)整个循环
2)跳出switch-case结构
案例代码
package day03;
public class Hello {
public static void main(String[] args) {
int i=0;
while(true) {
System.out.println("Hello World");
i++;
if(i==3) {
break;
}
}
}
}
流程图
continue关键字
continue关键字的作用:
结束(中止)当前循环,继续下一个循环(如果满足循环条件的话)
案例代码
package day03;
/**
* 生成3个随机的偶数
* @author yangzc
*
*/
public class ContinueTest {
public static void main(String[] args) {
int i=0,x;//i用来统计偶数的个数,x用来接收生成的随机数
while(i<3) {
x=(int)(Math.random()*101);
if(x%2!=0) {//如果x是奇数的话
continue;//结束当前循环
}
System.out.print(x+"\t");
i++;
}
}
}
流程图
循环嵌套
案例代码
package day03;
/**
* 使用循环嵌套打印图案
*
* @author yangzc
*
*/
public class PrintTest {
public static void main(String[] args) {
int rows = 3;
for(int i=1;i<=rows;i++){//i表示第几行
//打印第i行
for(int j=1;j<=i;j++){//
System.out.print('*');
}
System.out.print('\n');//换行
}
}
}
运行效果
过程分析
1、i=1,i<=3是满足的,进入主循环
1)j=1,j<=i是满足的,进入子循环
打印1个*
j++
2)j=2,j<=i不满足,子循环结束
3)换行
4)i++
2、i=2,i<=3是满足的,进入主循环
1)j=1,j<=i是满足的,进入子循环
打印1个*
j++
2)j=2,j<=i是满足,进入子循环
打印1个*
j++
3)j=3,j<=i不满足,子循环结束
4)换行
5)i++
3、i=3,i<=3是满足的,进入主循环
1)j=1,j<=i是满足的,进入子循环
打印1个*
j++
2)j=2,j<=i是满足的,进入子循环
打印1个*
j++
3)j=3,j<=i是满足的,进入子循环
打印1个*
j++
4)j=4,j<=i不满足,子循环结束
5)换行
6)i++
4、i=4,i<=3不满足,主循环结束
自增运算符
案例代码
package day03;
public class MathTest {
public static void main(String[] args) {
int a=3,b;
b=(a++)+(++a)+(a++)*2+a+(++a);
System.out.println(b);
}
}
分析
括号的优先级最高,自增运算的优先级高于乘运算和加运算,乘运算的优先级高于加运算,赋值运算优先级最低
运算的次序:
1)计算表达式a++,因为++在后面,所以结果就是a原来的值3,a的新值为4
2)计算表达式++a,因为++在前面,所以结果就是a的新值5
3)计算表达式(a++)*2,该表达式的结果为a原来的值5乘以2,等于10,a的新值为6
4)计算表达式a,该表达式的结果为a本身6
5)计算表达式++a,该表达式的结果为a的新值7
6)将步骤1~5得出的结果进行相加,3+5+10+6+7=31
复合运算符
案例代码
package day03;
public class MathTest2 {
public static void main(String[] args) {
int i=12;
i+=i-=i*=i;
System.out.println(i);//-120
}
}
分析
1)表达式i+=i-=i*=i等价于i+=i-=i*i
2)表达式i+=i-=i*i等价于i+=i-i*i
3)表达式i+=i-i*i等价于i=i+i-i*i
4)i=12+12-12*12=-120
if结构
通用的语法格式:
if(条件){
...
}
if分支里面如果只有一条执行语句,可以写成如下格式:
if(条件)
语句1;
if-else结构
通用的语法格式:
if(条件){
...
}else{
...
}
如果else分支里面只有一条执行语句,可以写成如下格式:
if(条件){
...
}
else
语句2;
if-else if-else结构
通用的语法格式:
if(条件1){
...
}else if(条件2){
...
}else if(条件3){
...
}else{
...
}
switch-case结构
switch(表达式){
case 常量:
...
break;
case 常量:
...
break;
default:
...
}
switch表达式的结果的数据类型:
String类型:ok
byte类型:ok
short类型:ok
int类型:ok
char类型:ok
枚举类型:ok
long类型:not ok
boolean类型:not ok
float类型:not ok
double类型:not ok
参考资料
[01] 运算符的结合性
https://www.cnblogs.com/softwaretesting/archive/2011/08/16/2139068.html
[02] Java运算符优先级
https://www.cnblogs.com/zjfjava/p/5996666.html
[03] 在JAVA命令行中输入参数,星号是如何处理的?
https://zhidao.baidu.com/question/56783574.html
[04] JVM内存初学 堆、栈、方法区
https://www.cnblogs.com/dingyingsi/p/3760730.html
[05] Java中的堆内存、栈内存和方法区总结
https://orochimaru-sama.iteye.com/blog/2372341
[06] 你所不知道的Java之char默认值
https://www.jianshu.com/p/d20d5f8bb878
[07] JAVA经典算法40题
https://www.cnblogs.com/jianmang/articles/4878924.html
[08] java中this关键字的作用
https://www.cnblogs.com/lzq198754/p/5767024.html
[09] java里的静态成员变量是放在了堆内存还是栈内存
https://zhidao.baidu.com/question/1643722234531216060.html
[10] Java基础-方法区以及static的内存分配图
https://blog.csdn.net/wang_1997/article/details/52267688
微信扫一扫关注该公众号【测试开发者部落】
点击链接加入群聊【软件测试学习交流群】
https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号: 511619105