【Java SE】变量和运算符

来源:互联网 发布:nginx 只能访问index 编辑:程序博客网 时间:2024/06/05 18:27
  • Java程序的基本结构

    package test;                                   // 定义包public class Example {                          // 创建类    static int ONE = 1;                         // 定义类的成员变量    public static void main(String[] args) {    // 定义主方法        String str = "Hello";                   // 定义局部变量        System.out.println(ONE);                // 输出成员变量的值        System.out.println(str);                // 输出局部变量的值    }}
    • 一个Java程序的基本结构大体可以分为包、类、main()主方法、标识符、关键字、语句和注释等
      • 关键字:package(标识包)、class(标识类)、static(标识静态)
      • 标识符:test(表包名)、Example(表类名)、ONE(表成员变量名)、args(表形式参数名)、str(表局部变量名)
      • 包:关键字package后的标识符为包名
      • 类:关键字class后的标识符为类名
      • 主方法:“public static void main(String[] args){}”主方法的固定写法,是Java应用程序的入口点,Java程序是从该方法开始执行的
      • 语句:“System.out.println();”在命令行或控制台输出信息的语句的固定写法
      • 注释:语句后由“//”标识的内容,不会被编译到字节码文件中
  • 标识符

    • Java中的包、类、方法、参数和变量的名称
    • 命名规则:
      • 必须以字母、下划线或美元符号开头,余下的字符可以是下划线、美元符号或任何的字母、数字,长度不限
      • 为了避免出错,建议只用英文进行命名,采用具有实际意义的单词
      • 标识符中不能有空格
      • 不能是Java的关键字和保留字
      • Java语言中标识符是区分大小写
      Java标识符命名规范
  • 关键字/保留字

    关键字/保留字
    • 红色为保留字
  • 基本数据类型

    数据类型分类
    • 整数类型:byte|short|int|long

      • Java各整数类型有固定的表数范围和字段长度,其不受操作系统的影响,以保证Java程序的可移植性(使用时一定要注意,以免数据溢出产生错误)
        整数类型
        • 思考:是否存在一个数a,满足a+1<a?
          byte b1 = 127;byte b2 = b1 + 1;// b2=-128
      • Java语言的整型常量默认为int型
      • 声明long型后面需加上l或L,负责会出错(建议加L)
      • Java中整型的三种表示形式:
        • 十进制数:0~9,第一位不能是0
        • 十六进制数: 0~9,A~F,必须以0x或0X开头
        • 八进制数:0~7,必须以0开头
    • 浮点类型:float|double

      • Java浮点数类型有固定的表数范围和字段长度,不受平台影响
        浮点数类型
      • Java浮点数类型有两种表示形式:
        • 十进制数形式
        • 科学记数法形式
      • Java浮点型常量默认为double型,如果要声明一个常量为float型,则需在数字后面加f或F
    • 字符类型:char

      • 单个字符用char类型表示,通常取值为:英文字母、数字、转义字符、特殊字符等
      • Java中的字符占两个字节,可以用十六进制编码形式表示
      • Java中的字符类型的值通常用单引号括起来
      • 字符类型是一个16位无符号整数(所以char型可以隐式转换为int型)
      • 转义字符
        转义字符
    • 布尔类型:boolean

      • 适用于逻辑运算,一般用于程序流程控制
      • boolean类型有两个值:true和false
  • 基本数据类型的转换

    • 隐式类型转换

      • 多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后进行计算
      • 转换规则:
        1. boolean类型不可以转换为其他的数据类型
        2. 整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵守以下原则
    • 显式类型转换

      • 容量大的数据类型转换为容量小的数据类型时,需要使用强制类型转换
      • 语法:变量 = (目标类型) 值
      • 在强制类型转换过程中,源类型的值可能大于目标类型,因此可能造成精度降低或溢出(建议尽量不用显示类型转换)
  • 常量和变量

    • 常量

      程序里持续不变的值,在整个程序运行过程中它是不可改变的
      • 在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定,所以通常也被称为“final变量”
      • 常量名通常使用大写字母表示
    • 变量

      程序中表示值能改变的量
      • 变量代表内存中值的保存空间
      • Java中任何变量都有一种类型,类型不同决定开辟内存空间大小的不同
      • 变量不是在整段代码中都可以使用,变量有自己的作用域
        • 变量的作用域从声明变量的地方开始,到所在块结束
        • 离开变量的作用域,变量所代表的内存空间将被回收
      • 根据变量的作用域划分变量:
        • 类变量:用static修饰的成员变量,它们在类被载入时创建,只要类存在,static变量就存在
        • 成员变量:类体中声明的变量,也称为全局变量,在类的整个生命周期中都有效
        • 局部变量:方法体中声明的变量、方法中的参数或代码块中声明的变量都是局部变量,只在方法调用的过程中有效,方法调用结束后失效
          不同作用域变量
      • Java是强类型语言,所以Java中的变量:
        • 必须声明并且初始化以后才能使用
        • 必须有明确的类型
        • 在同一作用域内不能重复定义
      • 变量初始化顺序:
        1. 隐式赋予默认值
        2. 显式赋予初始值
        3. 通过构造器赋予新值
      public class VarDemo {    public static void main(String[] args) {        int age;                             // 变量的声明        //System.out.println(age);           // 错,变量没有初始化        age = 12;                            // 变量初始化,即变量的第一次赋值        System.out.println(age);             // 12        age = 15;                            // 变量赋值        System.out.println(age);             // 15        //System.out.println(length);        // 错,变量没有被声明        int length = 20;                     // 声明变量并且直接初始化        System.out.println(length);          // 20        if(age<14){            int rank = 15;                   // 声明局部变量                System.out.println(rank);    // 15        }        //System.out.println(rank);          // 错,超出作用域调用变量        int rank = 18;                       // 不同块内可以重新定义        System.out.println(rank);        //int age = 8;                       // 错,相同块内重复定义变量    }}
  • 运算符

    运算符是主要用于数学函数、一些类型的赋值语句和逻辑比较方面的一些特殊符号
    • 赋值运算符

      • 赋值运算符即“=”,是一个二元运算符,其功能是将右方操作数所含的值赋值给左方的操作数
      • 赋值表达式左方必须是一个变量,而右边所赋的值可以是任何数值或表达式,包括变量、常量或有效的表达式
    • 算术运算符

      • 算术运算符主要有+(加)、-(减)、*(乘)、/(除)或%(求余),它们都是二元运算符
      • 除法运算时,0不可以做除数,否则系统会报出ArithmeticException的异常
      • 对于“+”:
        • 在两个数值之间表示加法运算
        • 当操作数中只要有一个是String类型,系统会自动将另一个操作数转换成字符串类型,然后进行连接
    • 自增和自减运算符

      • ++(自增)、--(自减)运算符是单目运算符,操作元必须是一个整型或浮点型变量
      • 自增、自减运算符可以放在操作元之前,也可以放在操作元之后
        • 放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算
        • 放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将变量加1(减1)
        int a=1;int b=1;b=a++;//b=1/* * a++表达式的值是1 * 执行赋值运算,将表达式的值1赋值给b,即b=1 * 执行a++,即a=a+1 */int i=1;int j=1;j=++i;//j=2/* * ++i表达式的值是2 * 执行赋值运算,将表达式的值2赋值给j,即j=2 */
    • 比较运算符

      • 比较运算符属于二元运算符,主要有>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)和!=(不等于)
      • 比较运算符用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较
      • 比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果时true,否则结果是false
      • 比较运算符通常用在条件语句中来作为判断的依据
    • 逻辑运算符

      • 逻辑运算符包括&&(&)(逻辑与)、||(|)(逻辑或)和!(逻辑非),返回值为布尔类型的表达式,操作元也必须是boolean型数据
      • 在逻辑运算符中,除了“!”是一元运算符之外,其余都是二元运算符
      • &&具有短路性,即左面的表达式为false,则将不会计算其右边的表达式
      • ||具有短路性,即左面的表达式为true,则将不会计算其右边的表达式
        int i=1;boolean b= i!=1 && (i++)==2;//短路与,i++不执行System.out.println(b);//falseSystem.out.println(i);//1b= i!=1 & (i++)==2;//非短路运算,i++执行System.out.println(b);//falseSystem.out.println(i);//2
    • 位运算符

      • 位运算符包括&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)、>>>(无符号右移)
      • 按位与(或)既可以参与位运算,又可以参与逻辑运算
      • 左移和右移运算相当于实现整数乘以或除以2的n次方
      • 不用其他变量实现两变量互换
        // 如果需要交换的是两个整数类型的变量,可以使用异或运算符进行互换,而不需要使用第三变量import java.util.Scanner;public class VariableExchange {                     // 声明类    public static void main(String[] args) {        // 主方法        Scanner sc = new Scanner(System.in);        // 创建扫描器        System.out.println("请输入变量A的值:");        long A = sc.nextLong();                     // 接收第一个变量值        System.out.println("请输入变量B的值:");        long B = sc.nextLong();                     // 接收第二个变量值        System.out.println("A=" + A + "\tB=" + B);        System.out.println("执行变量互换……");        A = A ^ B;                                  // 执行变量互换        B = B ^ A;        A = A ^ B;        System.out.println("A=" + A + "\tB=" + B);  // 执行交换后的结果    }}
    • 三元运算符

      • 语法:表达式1?表达式2:表达式3
      • 三元运算符是对三个表达式进行的集中比较,表达式1的结果为true时,就为第二个表达式,如果为false时,就为第三个表达式
        //4<3表达式的结果为true和false中的一个boolean n = (4<3) ? true : false;//打印并显示结果System.out.println(n);
    • 运算符的优先级

      • 一元操作符>二元操作符>三元操作符
      • 算术运算符>关系运算符>逻辑运算符>赋值运算符
      • 括号优先级别最高
  • 表达式

    • 符合一定语法规则的运算符和运算数的序列
    • 对表达式中操作数进行运算得到的结果称为表达式的值
    • 表达式值得数据类型即为表达式的类型
    • 运算顺序:
      • 按照运算符的优先级从高到低的顺序进行
      • 优先级相同的运算符按照事先约定的结合方向进行
0 0
原创粉丝点击