运算符

概述:对常量与变量进行运算操作的符号称为运算符。

组成:

三元运算符:

        格式:(比较表达式)?表达式1:表达式2;

        注意:三元表达式的结果必须是一个值。可以比较后赋值,也可以直接输出结果。

        嵌套格式:(比较表达式)?(比较表达式)?表达式1:表达式2(比较表达式)?表达式1:表达式2;

算数运算符:+(正号)-(负号)+(加)-(减)*(乘)/(除)%(取余)

                        ++(自增)--(自减)+(字符串连接符)。

赋值运算符:=、+=、-=、*=、/=、%=。

比较运算符:==、!=、>、<、>=、<=、%=。

逻辑运算符:&、|、&&、||、^、!。

结果:true&true=true        true&false=false        false&false=false

结果:true|true=true        true|false=true        false|false=false

过程:&&、||        当第一个判断已经能确认结果时,后面不参与运算。

结果:true^true=false        true^false=true        false^false=false        false^true=true

结果:!true=false        !false=true

位运算符:<<(左移)、>>(右移)、>>>(无符号右移)&(与)|(或)^(异或)~(反码)

概述:对二进制进行运算,是最有效率的运算方式。

8<<2:对二进制00001000左移两位空位补零,移出的丢弃,结果为00100000,十进制32。

8>>2:对二进制00001000右移两位,最高位是0补0是1补1,移出的丢弃,结果为

                00000010,十进制2。

3>>>1:对二进制00000011右移两位,不管最高位是0或1都补0,结果为00000001,十进制1。

-8>>>3:因为内存中是对补码进行操作,所以要先得出-8的补码,

                原码: 10000000        00000000        00000000        00001000

                反码:11111111           11111111          11111111          11110111

                补码:11111111           11111111          11111111          11111000

        右移三位:00011111          11111111          11111111           11111111

        由于右移后最高位是0,变成了正数,而正数的原反补相同,所以结果为十进制536870911

&(位与运算)两个二进制位上的数相比较,有0则0,无0则1。

|(位或运算)两个二进制位上的数相比较,有1则1,无1则0。

^(位异或运算)两个二进制位上的数相比较,相同则0,不同则1。

~(反码)对一个数进行取反操作。

语句

顺序结构

程序从上往下依次执行代码称为顺序结构。

class Demo{
    public static void main(String[] args){
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
    }
}

选择结构

if语句:

格式一:if(条件表达式){执行语句体;}

/*
例子:比较一个数是否等于一个数。
*/
public static void main(String[] args){
    int x = 3;
    if(x==3){
        System.out.println("恭喜匹配正确");
    }
}

格式二:if(条件表达式){执行语句体;}else{执行语句体}

/*
比较表达式结果为true执行if中的语句体,false则执行else中的语句体;
*/
public static void main(String[] args){
    int x = 3;
    if(x==5){
        System.out.println("恭喜匹配正确");
    }else{
        System.out.println("数字与答案不匹配");
    }
}

格式三:if(条件表达式){

                语句体1;}elseif(条件表达式){

                语句体2;}elseif(条件表达式){

                语句体3+n;}else{

                语句体n}

/*
格式三适用于多层判断,可以有无数个else if,当前面都不匹配时执行else中的代码。
*/
public static void main(String[] args){
    //输入成绩查询段位
    int x =99;
    if(x>=0&&x<=20){
        System.out.println("青铜");
    }else if(x>=21&&x<=40){
        System.out.println("白银");
    }else if(x>=41&&x<=60){
        System.out.println("黄金");
    }else if(x>=61&&x<=70){
        System.out.println("铂金");
    }else if(x>=71&&x<=80){
        System.out.println("钻石");
    }else if(x>=81&&x<=90){
        System.out.println("星耀");
    }else if(x>=91&&x<=100){
        System.out.println("王者");
    }else{
        System.out.println("请输入正确的成绩0-100");
    }
}

判断结构

switch语句:

格式:switch(选择表达式){

                case值:

                      执行语句体;

                break;

                default:

                        执行语句体;

                break;

             }

特点:switch语句操作的类型只有short,byte,int,char。

循环结构

格式:for(初始化表达式;循环条件;循环后操作){

        循环体语句;

        }

注意:break结束当前循环;continue结束本次循环执行下一次循环;

格式:while(循环条件){

            循环体语句;

            控制结束语句;

        }

格式:do{

        循环体语句;

        控制结束条件;

        }while(循环条件);

方法

定义:方法就是定义在类中的具有完成某些功能的代码块。

格式:修饰符 返回值类型 方法名 (参数类型 参数1,参数类型 参数2){

                代码块;

                return 返回值;

        }

特点:

        1、定义函数可以将功能代码进行封装。
        2、便于对该功能进行复用。
        3、函数只有被调用才会被执行。
        4、函数的出现提高了代码的复用性。

注意:写方法前的两个需要确认的问题,1、返回值类型是什么?2、参与运算的参数个数以及

           类型。

方法的重载:Java中允许多个方法使用同样的名称,只要参数列表个数或者参数类型不同即可。

                      这样就无需使用者自己去选择使用哪个方法,程序会根据传递的参数类型或个数自

                      动匹配。

数组

定义:可以存储多个同类型变量的容器。

格式一:数组类型[]数组名 = new 数组类型[元素个数或数组长度];

格式二:数组类型[]数组名 = new 数组类型[]{数组中的元素};

解释:格式1适用于元素未知但个数明确,格式2适用于个数以及值都明确。

数组的常见操作:

数组遍历:

/*
练习:数组遍历
需求:定义一个数组并遍历输出其中的元素。
分析:使用for循环完成。
*/

class Demo{
	public static void main(String[] args){
		//定义一个数组并存入数据。
		int [] arr = new int[]{9,4,5,3,1,2,7,8,6,0};
		//从0角标开始遍历,当遍历到等于数组长度-1的角标时结束循环。
		for(int x=0;x<arr.length;x++){
			System.out.print("["+arr[x]+"],");		
		}
	}
}

java 中hex格式定义hex java中和怎么表示_java 中hex格式定义hex

获取最值:

/*
练习:获取数组中的最大值
需求:定义一个数组并遍历比较其中的值,输出最大值。
分析:使用for循环嵌套if完成。
*/

class Demo{
	public static void main(String[] args){
		//定义一个数组并存入数据。
		int [] arr = new int[]{0,4,5,3,1,2,7,8,6,9};
		//定义一个变量max存放最大值,tep存放零时较大值。
		int max,tep=arr[0];
		//从0角标开始遍历,当遍历到等于数组长度-1的角标时结束循环。
		for(int x=1;x<arr.length;x++){
			if(tep<arr[x]){
				tep = arr[x];
			}
		}
			max = tep;
			System.out.println("最大值为:"+max);
	}
}

java 中hex格式定义hex java中和怎么表示_java 中hex格式定义hex_02

元素逆序:

class Demo{
public static void main(String[] args){
    int[] arr={9,8,7,6,5,4,3,2,1};
    niXu(arr);
    for(int x=0;x<arr.length;x++){
        System.out.print(arr[x]+" ");
    }
        System.out.print("\n");
    }

    public static int[] niXu(int[] arr){
        for(int x=0;x<arr.length/2;x++){
            int tep=arr[x];
            arr[x]=arr[arr.length-1-x];
            arr[arr.length-1-x]=tep;
        }
        return arr;
    }
}

java 中hex格式定义hex java中和怎么表示_数组_03

元素排序:

/*
需求:
    元素排序:冒泡排序

 */

class Demo{                                            //定义一个Java类并起名为Demo
    public static void main(String[] args){            //程序的main方法,作为程序执行的入口。
        int [] arr={9,8,3,5,2};                        //定义一个int类型的数组并在堆内存中开辟一个空间同时赋值。
        System.out.print("冒泡排序前:");                //输出说明字符串
        daYing(arr);                                   //调用遍历输出方法,输出数组中的值
        paiXu(arr);                                    //调用排序方法,对数组中的值进行排序
        System.out.print("冒泡排序后:");                //输出说明字符串
        daYing(arr);                                   //调用遍历输出方法,遍历输出排序后的数组值。
    }
    //定义打印数组的方法
    public static void daYing(int[] arr){              //定义一个方法类型为void,参数列表为接收一个int类型的数组,起名为arr
        //循环遍历数组的元素
        for(int i=0;i<arr.length;i++){                 //定义一个for循环,初始化语句为定义一个int类型变量i赋值为0,判断i小于数组长度则执行语句体,
            System.out.print(arr[i]+" ");              //第一次循环输出arr[i]的值,第一次i是0,循环完成后i++变成1.小于数组长度则再次执行输出语句,
        }                                              //第二次arr[i],i的值变成1。以此类推,直到i不小于数组长度。以此实现数组的遍历。
        System.out.print("\n");                        //\n,转移字符n,换行。
    }
    //定义对数组排序的方法
    public static void paiXu(int [] arr){              //定义一个类型是void的方法,参数列表一个,参数类型为int类型数组起名为arr
        for (int i=0; i<arr.length -1; i++){           //外层循环,用于控制总体比较的次数。在第一次比较时最大值已经到了最后,所以最后一个不需要在次比较,-1操作。
            for (int j=0; j<arr.length -i -1; j++){    //内层循环,用于控制每次的比较,比较排好序的值不需要再次比较,所以-i -1操作。
                if(arr[j]>arr[j+1]){                   //判断两个相邻的值中的较大值
                    int temp=arr[j];                   //如果前者比后者大,则通过第三方变量的方式把他俩的值互换,然后拿换后大的值再跟相邻的值比较,以此类推,直到条件结束。
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        System.out.print("第"+(i+1)+"轮排序后");        //输出每一轮排序后的值。
        daYing(arr);
        }
    }
}

二维数组:

定义:数组是变量的容器,而二维数组就是数组的容器,可以存放多个数组。

格式:

格式1、int [][] arr =new int[3][4];

格式说明:int后面跟两个[]就说明这是一个二维数组,然后new一个3是三个数组,4是每个数组的长度为4。

格式2、int [][] arr =new int[3][];

格式说明:跟第一种格式类似,只是没指定数组的长度,后面可以单独指定每个数组的长度。

格式3、int[][] arr ={{1,2},{3,4,5,},{6,7},{8,9}};

格式说明:上面定义了四个数组,并分别静态初始化赋值。

访问操作二维数组也是通过角标的方式,例如格式2定义了3个数组但没有指定长度跟赋值。那么就可以通过arr[0] = new int[] {1,2};来赋值,而要操作这个值1,则用arr[0][0]来访问。