java中的小细节

                        java中的小细节

1)java中的负数用二进制表示是用补码的形式(负数的绝对值取反 加一):例如十进制的-1            正数: 符号位为0;负数: 符号位1                                                                                                  十进制的-1(int类型)用二进制表示:首先-1的绝对值1用二进制表示是:        00000000 00000000 00000000 00000001                                                                            取反:    11111111    11111111   11111111  11111110                                                                            加1:     11111111    11111111   11111111  11111111  也就是说int类型的-1用二进制表示就是:11111111    11111111   11111111  11111111

2) >>和>>>:前者是位运算表示右移(高位补符号位);后者表示逻辑右移(高位补0);也就是说两者如果是正数右移的话,结果没有什么区别,但是如果是负数的话就有区别了,前者结果还是负,后者就变成正了;

3)&和^这两个位运算符的两个小例子:

    例如:int num=new Random().nextInt(100);boolean a=(num&1==1)?true:false;这段代码的意思就是判断随机生成的num整数是不是奇数;

^的例子:int a=1,b=2;两个变量a和b互换位置: a=a^b;b=a^b;a=a^b;也可以这么写:a^=b;b^=a;a^=b;

4)默认值:Java中八种基本数据类型:boolean类型的默认值是:false;其他七种基本类型默认值都是0,只是表示方式不用(char的默认值是‘\u0000’,long的是:0L,float的是:0.0F,double的是:0.0),对象类型的默认值是:null;

5)break,continue,return三个关键字:                                                                                       break 除了在switch语句中使用以外,只是针对for循环的代码块,是结束循环的意思;               continue 只是用在for循环的代码块中,是跳出本次循环,继续下一次循环的意思;                   return 是针对方法的,是返回的意思 ,有返回值就返回返回值,如果没有就跳出方法,结束方法体的运行;

6)冒泡排序和选择排序: 

//冒泡排序;

for(int i=1;i

    for(int j=0;j

        if(arr[j]>arr[j+1]){

                //交换j和j+1两个位置的元素;

            }

    }

}

//选择排序:

for(int i=0;i

    for(int j=i+1;j

        if(a[i]>a[j]){

            //交换位置;

            }

    }

}


7)汉罗塔(递归):用java代码表示汉罗塔的过程;

如果要解决一个大问题可以分解成若干个小问题来解决,而小问题的解决跟这个大问题的思路是一样的;类似这样的大问题都可以用递归来解决;递归最重要的是要找到:递归的截止条件,不能无限的递归下去;

public class HanLuoTa{

    public static void main(String[] args){

        transfer(8,'a','b','c');

    }

    //把n个盘子,从from柱移动到to柱,借助于temp柱;

    public static void transfer(int n,char from,char to,char temp){

        if( n == 0) return;//递归的截止条件;

        //把n-1个盘子,从from柱移动到temp柱,借助于to柱;

        transfer(n-1,from,temp,to);

        //把第n个盘子,从from住移动到to柱;

        System.out.println(from+"------->"+to);

        //把n-1个盘子,从temp柱移动到to柱,借助于from柱;

        transfer(n-1,temp,to,from);

    }

}

你可能感兴趣的:(java中的小细节)