表达式

来源:互联网 发布:阿里云服务器空间满了 编辑:程序博客网 时间:2024/04/17 03:40
表达式:
    把变量和字面值用某个运算符连接起来的式子 一个表达式必须有一个固定的值
    a++表达式的值是4 ++a表达式的值是5
标识符
    语法:
    (1)字母、数字、下划线和货币符号且数字不能开头
    (2)大小写是敏感的
    (3)不能使用关键字和保留字
     关键字 Class、package Java所有关键字都是小写 true和false也不行
     保留字 goto const
    (4)没有长度限制
        习惯:望文生义、包名全小写、单词首字母大写、函数首单词小写 其他大写、常量名全大写,类名首字母大写。
变量
    强类型:数据类型和变量类型必须相同
    对象类型(引用类型)、简单类型(基本类型、原始类型)
    例子:
        int[] a1 = new int[3];
        int[] a2 = new int[2];
        int[][] a3 = new int[3][4];
        String[] a4 = new String[3];
        System.out.println(a1.getClass() == a2.getClass());
        //System.out.println(a1.getClass() == a3.getClass());
        //System.out.println(a1.getClass() == a4.getClass());
        System.out.println(a1.getClass().getName());
        System.out.println(a3.getClass().getName());
        System.out.println(a4.getClass().getName());
        System.out.println(a1.getClass().getSuperclass().getName());
        System.out.println(a1.getClass().getSuperclass().getName());
        Object o1 = a1;
        Object o2 = a3;
        Object o3 = a4;
        //Object[] o3 = a1;//报错
        Object[] o5 = a3;
        Object[] o6 = a4;
        //这个地方是比较奇特的。。。。用数组对象的引用指向一个数组对象 而不是用一个对象引用指向数组对象
    整数类型:byte  1个字节 -128~127 short 2个字节 -32768~32767 (0~65535)int 4个字节 -2147483648~2147483647 long 8个字节
    浮点数类型: float 4B double 8B
    浮点数字面值表示方法 double dx = 1.4D; float fx = 1.4F; double dx = 1.4e10;
    字符型 char unicode编码方式 char a = 65 a= 'A' a='\u0041'
                                     a = 97 a= 'a'
                                     a= 48  a= '0'
    编码:
        常见的编码:
        美国 ASCII 1char-1byte
        ISO-8859-1西欧 1char-1byte
        GB2312 国标码 GBK 扩充国标码 简体中文 两者字符集不同
        big5 繁体中文 港澳台常常使用
        UTF-8 UTF-16 统称unicode编码 前者是变长字节 后者是定长字节 1char - 2byte
    转义字符 '\t' 水平跳格 '\n'换行 '\''单引号 '\"'双引号  '\\'反斜杠
    字符串能参与加法运算 表示字符连接
    例子:Class Address{}
    Address adr;
    String s = "a"+3+3+adr;//前两个运算结果是字符串 编译运行没有问题
    String s = "a"+adr+3+3;//前两个运算结果是字符串 编译运行没有问题
    String s= 3+3+adr+"a";//前两个是类和数值相加 编译会报错
    String s = 3+3+"a"+adr//没有问题 运算是从左到右,前两个运算结果是字符,字符可以和对象相加没有问题 编译运行通过
    字面值:为一个属于某一个数据类型赋的值
    类型转换
    int i short s
    强制类型转换 s=i;
    自动类型转换 i=s;

    自动类型提升
        如果a和b有double ==>double
        如果a和b有float ==>float
        如果a和b有long ==>long
        默认提升为int
        byte b = 3;b+=3;b=b+3;这两个表达式,第一个不会发生自动类型提升,后一个会有自动类型提升
运算符
    自增运算符:++a和a++  ++a要省一个寄存器
    布尔运算符 == > < >= <= !=
    移位运算符 >>>(逻辑移位) >> << 左移一位相当于乘以2 右移一位相当于除以2
    例子:2*8 == 2<<3 左移三位
    位运算符 &与 ~按位求反(单目运算符) |或 ^异或(相同为0 不相同为1)
    例子:ox0f常和&搭配 0001&ox0f = 0001

    短路运算符(&&) 只判断一个表达式是否为假 就不需要判断后边一个表达式是否为真了 非短路运算符  两个表达式都需要判断
    例子:if(s!=null&&s.equals(a))如果第一个为假,后一个就不需要判断了
          if(s!=null&s.equals(a))两个都需要判断,后面会抛出NullPointerException()

0 0
原创粉丝点击