zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    shell 循环语句
    windows8运行zxing源码 生成与解码二维码 详解(含注释与图解可直接运行)
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    比Redis快5倍的中间件,究竟为什么这么快?
    机器学习——TensorFlow实战手写体识别
    移动通信网络中的 3A 实现
    比Redis快5倍的中间件,为啥这么快?
  • 原文地址:https://www.cnblogs.com/hoobey/p/5187619.html
Copyright © 2011-2022 走看看