java笔记-2

局部变量:不是声明在类体括号里面的变量
(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四种类型

数组:
声明数组:
数组能以下列形式声明:
类型[] 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)

你可能感兴趣的:(java,局部变量,Class,栈)