A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔栋 中级黑马   /  2015-6-12 22:20  /  669 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//10进制------>16进制(利用查表法,并且不利用StringBuffer输出结果)
                        public static void toHex_2(int a)
                        {
                               
                                //定义一个十六制中能用到的表
                                char[] table = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                                                                                        // 0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
                                //定义一个用来装结果的数组
                                char[] result = new char[8];
                                //定义一个指针来指示有效位,指针从最大位开始。
                                int pos = result.length-1;
                                //当移位完a为0时,就没有必要往数组中装数据,指针也不需要移动了
                                while(a != 0)
                                {
                                                //因为四位2进制转为一位16进制,a&15即将最后4位提取出来并计算它所代表的16进制的值。
                                                //并的结果作为table的下表,正好找到所代表的16进制的值
                                                //因为最后输出结果为出c3000000,而最后值为0000003c,所以从最大位开始装数据
                                                result[pos--] = table[a&15];
                                                //a右移4位,此方法最高位不论正负都补0
                                                a = a>>>4;
                                               
                                }
                                //从当前位+1开始输出数组
                                for(int b=pos+1;b<=result.length-1;b++)
                                {
                                        System.out.print(result[b]+",")        ;
                                }
                        }       
2.//10进制转化2进制,8进制,16进制
                class Ary_Transform
                {
                        public static void main(String[] args)
                        {
                                toBin(60);
                                toBa(60);
                                toHex(60);
                        }
                       
                        //定义转换函数 num:要转换的10进制数
                        //                                                 base:转换2进制:与1&   转换8进制:与7&  转换16进制与15&
                        public static void transform(int num,int base,int move)
                        {
                                //定义查找表
                                char[] cha = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                                //定义装数据的数组
                                char[] result = new char[32];
                                //定义指向末尾的指针
                                int pos = result.length-1;
                                while(num != 0)
                                {
                                        //查表找出对应的字符
                                        char temp = cha[num&base];
                                        //将结果存入数组中,从末尾开始存放
                                        result[pos--] = temp;
                                        /*
                                                如17:0000 0000 0000 0000 0000 0000 0001 0001
                                                转16进制   0000 0000 0000 0000 0000 0000 0001  0001 = 1
                                                                                                                0000 0000 0000 0000 0000 0000 0001 = 1
                                                                                                                所以结果为0x11;
                                        */
                                        num = num>>>move;
                                }
                                for(int x=pos+1;x<result.length;x++)
                                {
                                        System.out.print(result[x]);
                                }
                        }
                       
                        //转2进制
                        public static void toBin(int num)
                        {
                                transform(num,1,1);
                        }
                       
                        //转8进制
                        public static void toBa(int num)
                        {
                                 transform(num,7,3);
                        }
                       
                        //转16进制
                        public static void toHex(int num)
                        {
                                 transform(num,15,4);
                        }
                }
3.二维数组
        int[][] arr1 = new int[3][];                
        int[][] arr2 = new int[4][2];//二维数组中有4个一维数组,
                                                                                                                        //每一个一维数组中有2个元素
        int[][] arr2 = {{2,3},{1,4,6,7,2}};
        System.out.println(arr1[2]); //打印的是arr1[2]的地址
        System.out.println(arr1[2]);//打印结果是null
        //也是一种定义二维数组的方式
        int[][] arr4 = new int[3][];
        arr4[0] = new int[3];
        arr4[1] = new int[1];
        arr4[2]        = new int[2];
4.数组的一些定义方法。
        a.int[] x;   int x[];//都对
        b.int[][]y;        int y[][];  int[] y[];//都对
        c.int[] x,y[];//x是一维,y是二维
        判断:
        a.x[0] = y;      //error
        b.y[0] = x;      //true
        c.y[0][0] = x;   //error
        d.x[0][0] = y;   //error
        e.y[0][0] = x[0];//true
        f.x = y;               //error
5.面向对象的三个特征:继承性,封装性,多态
        以后开发就是找对象,建立对象,使用对象,维护对象的关系
6.描述事物其实就是在描述事务的属性和行为。
        定义类就是在描述事物,就是在定义属性和行为
7.java中的数据类型:基本数据类型:byte,short,char,int,long,float,double,boolean
                                                                                引用数据类型:数组,类,接口
8.成员变量和局部变量的区别?
                a.成员变量作用于整个类,局部变量作用于函数,或者语句中。
                b.成员变量在堆内存中,因为对象的存在,才在内存中存在。
                        局部变量存在于栈内存中。
9.匿名对象的使用方式一:当对象的方法只调用一次,可以用        匿名对象来完成,这样写比较简化。new Car().run();
                                                                                                        如果对一个对象进行多个成员调用,必须给这个对象起个名字。
                                                                 方式二:可以将匿名对象作为实际参数进行传递 change(new Car());
                                                                                                         public static void change(Car c) {
                                                                                                                 c.num = 4;
                                                                                                                 c.run();
                                                                                                         }
10.封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
         好处:将变化隔离,便于使用,提高重用性,提高安全性。
         封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏起来,提供公共的方法对其访问。
11.private:私有,权限修饰符,用于修饰类中的成员(成员变量和成员方法);         
         私有只有在本类中有效。
         私有只是封装的一种表现形式。
12.构造函数
                特点:1.函数名与类名相同
                                        2.不用定义返回值类型
                                        3.不可以写return语句
                作用:给对象进行初始化
                注意:多个构造函数是以重载的形式存在的。         
13.对象一建立就会调用与之对应的构造函数。
                构造函数的作用,可以用于给对象进行初始化。         
                当一个类中没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数。
                当在类中自定义了构造函数后,默认的构造函数则不定义。
                构造函数是在对象一建立就运行,给对象初始化。
                而一般方法是对象调用才执行
                一个对象建立构造函数只运行一次,而一般函数可以被对象调用多次。
14.什么时候定义构造函数呢?
                当分析事物时,改事物存在就具备一些特性或行为,那么将这些内容定义在构造函数中。       
         

1 个回复

倒序浏览
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马