1.类型转换

1.1隐式转换:byte,short,char --> int --> long --> float --> double由小到大,即隐式转换了

                byte b = 3;

                int x = b + 2;//这便是一个隐式转换

1.2强制转换类型

//定义两个byte变量
byte a=8;
byte b=5;
//a,b变量在计算的时候先自动转换为int类型再参与计算
int c=a+b;
byte d=a+b;//这里在编译器中会报错,因为a,b是变量,计算时会先提升为int类型,显然int不能隐式转换为byte
byte d1=(byte)(a+b);//这里强转后是可以的

//byte e=a+5;//同理,和上述一样,a是变量,在编译器中也会报错

//这里的8和5是常量,他们优先计算.计算完毕之后,再根据结果来判断数据类型

byte f=8+5;//编译成功,这就是常量优先计算原则


2.运算符的几个知识点

2.1算数运算符中的%,/,++以及--

2.1.1    %是取余运算,得到的是两个相除数据的余数; /是除法运算,得到的是两个相除数据的商

其中%一般用于判断两个数是否能够整除。

2.1.2    关于++和--的运算:

当他们单独运算的时候:无论++或者--在数据前面和后面结果都是一样的

其他运算的时候:

如果++或者--在变量的后面,变量是先参与运算,后做++或者--;

如果++或者--在变量前面,变量是先++或者--,后参与运算。

下面给出一段实例:

                int a=5;
int b=10;
int c=a++;
int d=++b;
System.out.println(a);//输出6
System.out.println(b);//输出11
System.out.println(c);//输出5

System.out.println(d);//输出11


2.2    &&和&,||和|参与运算的区别

先来看下面实例的运行结果:

Java基础零散知识点

从上面程序的运行结果,可以看出&&和&是有区别的:

即&&具有短路效果,如果左边为false,则右边不会执行;&无论左边是什么结果,右边都执行;

同理||也具有短路效果,如果左边为true,则右边不会执行;|无论左边是什么结果,右边都执行。


2.3    三元运算符

三元运算符的具体表达式是:(关系表达式)?表达式1:表达式2

如果关系表达式是true,则运算结果为表达式1;否则运算结果为表达式2.


3.    流程控制语句

3.1选择流程控制语句

3.1.1     if语句

3.1.2    switch语句

来重点说一下switch中的穿透

先来看一个实例:

一年十二个月中,12,1,2是冬季;3,4,5是春季;6,7,8是夏季;9,10,11是冬季,键盘录入合理的数据判断是哪个季节

Scanner sc = new Scanner(System.in);
// 提示输入合适的整数
System.out.println("请输入一个合适的整数:");
int num = sc.nextInt();
switch (num) {
case 12:
System.out.println(num + "月是冬季");
break;
case 1:
System.out.println(num + "月是冬季");
break;
case 2:
System.out.println(num + "月是冬季");
break;
case 3:
System.out.println(num + "月是春季");
break;
case 4:
System.out.println(num + "月是春季");
break;
case 5:
System.out.println(num + "月是春季");
break;
case 6:
System.out.println(num + "月是夏季");
break;
case 7:
System.out.println(num + "月是夏季");
break;
case 8:
System.out.println(num + "月是夏季");
break;
case 9:
System.out.println(num + "月是秋季");
break;
case 10:
System.out.println(num + "月是秋季");
break;
case 11:
System.out.println(num + "月是秋季");
break;
default:
System.out.println("你输入的数字不合理");

break;

上述代码,看上去有很多重复的代码,下面来简化一下上述代码

Scanner sc = new Scanner(System.in);
// 提示输入合适的整数
System.out.println("请输入一个合适的整数:");
int num = sc.nextInt();
switch (num) {
case 12:
case 1:
case 2:
System.out.println(num + "月是冬季");
break;
case 3:
case 4:
case 5:
System.out.println(num + "月是春季");
break;
case 6:
case 7:
case 8:
System.out.println(num + "月是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(num + "月是秋季");
break;
default:
System.out.println("你输入的数字不合理");

break;

简化后的代码功能和为简化后的一样,这就是switch中的穿透,在case匹配的时候,当匹配到对应的数据,没有用break来结束

那么程序会继续执行下一个case中的代码,直到有break结束当前操作。

下面的一个实例也是在阐述switch的穿透作用:

Java基础零散知识点

程序的执行过程:先进入switch{}中匹配,发现没有可以匹配的项,因此去执行default中的代码,因为没有break结束流程

因此会继续执行下一个case语句中的代码,同样没有break结束流程,继续执行下一个case语句中的代码,直到switch{}中

的代码执行完毕,因此变量a做了三次++操作,输出结果为7.


4.    数组

4.1打印一个数组到控制台上

                //定义一个数组
int [] arr={1,5,2,8,3,10};
//打印数组第一个{
System.out.print("{");
//循环遍历数组
for (int i = 0; i < arr.length; i++) {
//判断是否是最后一个数组元素
if(i==arr.length-1){
System.out.print(arr[i]+"}");
}else{
System.out.print(arr[i]+",");
}
}          

输出到控制台上的结果是:{1,5,2,8,3,10}

4.2 数组的普通查找

public static int search(int[] arr,int key){
   for(int i=0;i<arr.length;i++){
       if(arr[i]==key){    //每一个元素比较
           return i;
       }
   }
   return -1;//没有找到,返回-1

}

4.3 数组的选择排序

            public static void selectSort(int[] arr){
   //外层循环轮数:length-1
   for(int i=0;i<arr.length-1;i++){
       //内层循环:每一轮比较次数
       for(int j=i+1;j<arr.length;j++){
           //比较大小,小的往前放
           if(arr[i]>arr[j]){
               int temp=arr[i];
               arr[i]=arr[j];
               arr[j]=temp;
           }
       }
   }

}

4.4数组的冒泡排序

            public static void bubbleSort(int[] arr){
   //外层循环:比较length-1轮
   for(int i=0;i<arr.length-1;i++){
       //内层循环:每一轮比较的次数,从0开始,依次减小
       for(int j=0;j<arr.length-i-1;j++){
           //j和j+1进行比较
           if(arr[j]>arr[j+1]){
               int temp=arr[j];
               arr[j]=arr[j+1];
               arr[j+1]=temp;
           }
       }
   }

}

4.5数组的折半查找(折半查找的前提是数组是有序的)

    public static int binarySearch(int[] arr,int key){
        //定义3个变量,start,end,mid
        int start=0;
        int end=arr.length-1;
        int mid=0;
        //每次找中的元素,循环找的查找,找完一次,继续折半
            //循环条件:start<=end;采用while循环
        while(start<=end){
            mid=(start+end)/2;
            //每次找中间arr[mid]的元素和要找的元素key比较
            if(arr[mid]>key){
                end=mid-1;
            }else if(arr[mid]<key){
                start=mid+1;
            }else{
                return mid;
            }
        }
        return -1;  //返回-1表示,没有这个而元素

}

以上内容纯属分享,不用做任何商业用途,如有侵权请联系博主删除。


相关文章: