java面试第二天

局部变量:不是声明在类体括号里面的变量

         (1)必须要先赋值,后使用,否则通不过编译,局部变量没有默认初始化值

         (2)作用范围:定义开始到定义它的代码块结束

         (3)同一范围内,不允许2个局部变量命名冲突

 

         参数传递时,简单类型进行值转递         (参数进行传递时都会先去栈中生成一个副本的,使用结束后释放)

        

自动类型提升:

         byte a = 1;

         byte b = 2;

         a = a+b;          //编译出错自动类型提升成int

         a += b;       //自加没有自动类型提升问题

         类型自动提升规则:

                  a和b作某种运算

                  a和b中有double,结果就是double

                  a和b中有float,结果就是float

                  a和b中有long,结果就是long

                  除此之外,结果都是int

         把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;

        

移位运算符:效率最高

         >>   有符号右移,补符号位

                  移负数位,则将该数值加32后再进行移位

                  数值的2进制是按照补码保存的

         >>>  右移后高位都补0

        

逻辑运算符:

         &/|也可以作为逻辑运算符

         &&   先判断前面一个条件,如果为假,则不用计算后一个条件

         ||     先判断前面一个条件,如果为真,则不用计算后一个条件

        

" + "运算符:

         两个操作的对象是数值时,是加法

         如果有一个是字符串时,则是字符串的连接

        

流程控制语句:

         同Core C++

         switch中的变量类型只能是byte、 short、int、char四种类型以及enum类型

                 switch(exp) exp 可以是整形表达式或者enum类型数据 

数组:

         声明数组:  

                  数组能以下列形式声明:

                           类型[] array;

                           类型 array[]; 

                  注:

                           JAVA中推荐用:类型[] array;

                           一个数组是一个对象

                           声明一个数组没有创建一个对象

                           声明时不用指定长度

                          

         创建数组:

                  创建基本数据类型数组:int[] i = new int[2];

                  创建引用数据类型数组:Student[] s = new Student[100];

                  数组创建后其中的元素有初始值

                           类型                     黙认值

                           byte                            0

                           short                            0

                           int                               0

                           long                             0l

                           float                             0.0f

                           double                   0.0d

                           char                             \u0000

                           boolean                  false

                           reference types         null

                  注:

                           创建时一定要指定长度

                           int[] i2=new int[];               //error

                          

         初始化数组:

                  声明、创建、初始化分开:

                           int[] i;   //定义数组

                           i = new int[2];        //分配空间

                           i[0] = 0;         //初始化

                           i[1] = 1;

                          

                  声明、创建、初始化在同一时间 :

                           int[] i = {0,1};         //显示初始化  {}中有几个值,则数组长度为几

                           Student[] s = {new Student(),new Student()};

                          

                  注:         int[] i=new int[]{1,2,3};            //后面[]中不可以写数值

                           int[] i1=new int[3]{1,2,3};          //error

                            

         二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组)

                  int[][] i1 = new int[2][3];

                  int[][] i4 = {{1,1,1},{2,2,2},{3,3,3}};

                  int[][] i3 = new int[][3];                  //不允许高维没分配空间而先给低维分配空间

                  int[][] i2 = new int[2][];

                  i2[0] = new int[2];

                  i2[1] = new int[3];    

                 

         数组长度:

                  数组的属性length

                  数组长度一旦确定,不可改变    

                  int[] i = new int[5]; 则i.length= 5

                 

         数组拷贝:

                  系统类System提供的

                  static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

                           src: 源数组                 

                           srcPos: 从源数组哪个位置开始拷贝(位置指的是元素的下标)

                           dest: 目标数组

                           destPos: 拷贝的元素放到目标数组的起始位置

                           length: 拷贝多少个

                          

         数组排序:

                  自己实现一个排序方法来进行排序

                  或者调用java.util.Arrays.sort(Object o)

 

posted @ 2016-02-13 14:20  starskyhu  阅读(274)  评论(0编辑  收藏  举报