Java基础知识点整理(一)

命令行参数

案例代码

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');//换行
        }
    }

}

运行效果

Java基础知识点整理(一)_第1张图片
image.png

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;
            }
        }
        
    }

}

流程图

Java基础知识点整理(一)_第2张图片
image.png

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++;
        }
    }
}

流程图

Java基础知识点整理(一)_第3张图片
image.png

循环嵌套

案例代码

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');//换行
        }
    }

}

运行效果

Java基础知识点整理(一)_第4张图片
image.png

过程分析
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

Java基础知识点整理(一)_第5张图片
image.png

复合运算符

案例代码

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

微信扫一扫关注该公众号【测试开发者部落】

Java基础知识点整理(一)_第6张图片
image.png

点击链接加入群聊【软件测试学习交流群】
https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号: 511619105

你可能感兴趣的:(Java基础知识点整理(一))