java中的小细节

作者: 孤峰无涯_ | 来源:发表于2018-05-13 16:57 被阅读0次

                            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<arr.length;i++){//相邻的元素比较, 每次找出最大的数,交换到数组末尾

        for(int j=0;j<arr.length;j++){//外层循环表示循环多少轮,内层循环表示每轮相邻的两个元素比较;

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

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

                }

        }

    }

    //选择排序:

    for(int i=0;i<arr.length-1;i++){//某个元素和剩余的所有元素比较, 每次找出最小的数,交换到数组开头

        for(int j=i+1;j<arr.length;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中的小细节

        本文链接:https://www.haomeiwen.com/subject/rfuldftx.html