Java笔记第二章变量与运算符

第二章 变量与运算符

一、关键字和保留字

  1. 关键字(keyword)

    定义: 被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
    特点: 关键字中所有字母都为小写

    1. Java保留字:现有Java版本尚未使用, 但以后版本可能会作为关键字使
      用。自己命名标识符时要避免使用这些保留字
      goto 、 const

二、标识符

  1. 标识符:
    Java 对各种变量、 方法和类等要素命名时使用的字符序列称为标识符
    技巧:凡是自己可以起名字的地方都叫标识符。
    定义合法标识符规则:
  • 由26个英文字母大小写, 0-9 , _或 $ 组成

  • 数字不可以开头。

  • 不可以使用关键字和保留字,但能包含关键字和保留字。

  • Java中严格区分大小写,长度无限制。

  • 标识符不能包含空格。

  1. Java中的名称命名规范:
    • 包名:多单词组成时所有的字母都小写:xxxyyyzzz
    • 类名、接口名: 多单词组成时,所有单词的首字母大写: XxxYyyZzz
    • 变量名、方法名: 多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写: xxxYyyZzz
    • 常量名:所有字母都大写。多单词时每个单词用下划线连接: XXX_YYY_ZZZ

三、变量

  1. 概念:

    • 内存中的一个存储区域
    • 该区域的数据可以在同一类型范围内不断变化
    • 变量是程序中最基本的存储单元,包含变量类型、变量名和存储的值,在Java中定义变量时必须定义变量的类型,也可以先声明变量不赋值,后面赋值时不必再定义类型
  2. Java中的主要数据类型:

    1. 基本数据类型:

      (1)数值型:

      • 整数类型

      (byte(1字节=8 bit,-128~127)、short(2字节)、int(4字节)、long(8字节,赋值时以L结尾,如果不加L相当于是int转为long,赋值的值为int,当其大于int范围就会报错))

      • 浮点类型

        float(单精度,4字节,可精确到7位有效数字,表示范围超过long)定义float时变量值的末尾要以f或F结尾

        double(双精度,8字节,精度是单精度的2倍)通常定义浮点型采用double

      (2)字符型(char,1字符=2字节)

      • 定义char型变量,通常使用‘’,内部只能写一个字符
      • 表示方式:1.声明一个字符 2.转义字符‘\n’换行符,‘\t’制表符相当于tab键 3.使用 Unicode 值来表示字符型常量 ‘\uXXXX’。其中, XXXX代表一个十六进制整数。

      (3)布尔型(boolean)true,false

    2. 引用数据类型:

      (1)类(class)字符串String属于类类型

      (2)接口(interface)(3)数组([ ])

    3. String类型变量(字符串)使用

      • String类型属于引用数据类型
      • 声明String类型变量时,使用一对“”
      • String可以跟八种数据类型做运算,且运算只能是连接运算,+,结果为String类型
      • 多个变量相加时如果没有括号,从左到右计算,如果出现了一个String后面的全为String,前面的根据实际情况计算
      • String类型有很多方法,比如.charAt(int index) 来获取指定索引的字符、.equals()判断两个字符串是否相等
  3. 前7种变量之间的运算

    1. 自动类型提升

      当容量小的数据类型的变量与容量大(表示数的范围,不是所占内存)的数据类型的变量做运算时,结果自动提升为容量大的数据类型

      byte --> int -->short -->long --> float -->double

      特别地,当byte、char、short三种类型的变量做运算时,结果为int型,char当做ascii码计算

    2. 强制类型转换

      • 需要强转符(),括号里写需要强制转换成的类型

      • 强转时可能会有精度损失,比如浮点型转换为整型会截断

      • 不能把String类型强制转换为其他类型,如果需要转换需要调用特殊的方法如

        int num = Interger.parseInt(str);

    3. 注意

      • 整型常量默认类型为int型
      • 浮点型常量默认为double型
      • 所以当声明变量为byte或者float时,在赋值时遇到整数或者浮点数需要进行强制类型转换
  4. 进制

    对于整数,不同进制的表示方式:

    • 二进制:满2进1,以0b或0B开头表示

      最高位为符号位,正数的补码与原码相同,负数的补码为反码+1,反码为除符号位外取反,由负数补码得到原码,也是取反+1

    • 十进制:满10进1

    • 八进制:满8进1,以数字0开头表示

    • 十六进制:0-9及A-F,满16进1,以0x或0X表示,此处的A-F不区分大小写


四、运算符

  1. 算术运算符

    +(正号,加,字符串连接),-(负号,减),*,/(当涉及到整型相除想到的不截断的浮点数,需要对任意一个整型变量进行强制转换或者在后面加0.0),%(取模,所得结果的正负只与被模数有关,经常用于判断一个数能不能整除另一个数),++(有两种情况:在前++前的变量先加1取值再执行代码,在后先执行代码后++后的变量再加1取值),–(同++)

  2. 赋值运算符

    =、+=(不会改变变量的数据类型,推荐使用)、-=、*=、/=、%=,还可以连续赋值int i,j;i=j=1;

  3. 比较运算符(关系运算符)

    ==、!=、<、>、<=、>=返回值为boolean

  4. 逻辑运算符

    &(逻辑与)、|(逻辑或)、!(逻辑非)

    &&(短路与)、||(短路或)、^(逻辑异或)

    • &&和||与&和|的计算结果相同

    • 短路是指&&时,当&&前为false时,&&右边的运算不再执行。当为||时,当||前为true时,||右边的运算不再执行

  5. 位运算符(很少用)

    位运算是直接对整数的二进制进行的运算

    <<(左移)、>>(右移)、>>>(无符号右移)

    &(与运算)、|(或运算)、^(异或)、~(取反)

    • 左移是整体左移n位,右边空出来的位补零,相当于原来的数乘以2^n,注意第一个不为0的位超过了最高位就不成立了,负数也成立

    • 在一定范围内,没向左移一位,相当于除以2,负数也成立,左移时最高位根据以前的数时正数还是负数来取值

    • 无符号右移是最高位都用0来补,负数会变成正数

  6. 三元运算符

    (条件表达式)?表达式1 : 表达式2

    注意

    • 条件表达式的结果为boolean类型
    • 根据条件表达式的真或假,决定执行表达式1还是表达式2,为true时执行1,为false执行2
    • 表达式1和表达式2可以统一成一个类型的情况下才能使用
    • 三元运算符可以嵌套使用
    • 凡是用三元运算符的地方都可以改写为if else,反之不成立
  7. 运算符的优先级

    不需要特殊记忆,怕用错就把想先计算的加小括号


五、流程控制

分支结构
  1. if语句

    • if(条件表达式){

      ​ 执行代码块;

      }

    • if(条件表达式){

      ​ 执行代码块1;

      }

      else{

      ​ 执行代码块2;

      }

    • if(条件表达式1){

      ​ 执行代码块1;

      }

      else if (条件表达式2){

      ​ 执行代码块2;

      }

      ……

      else{

      ​ 执行代码块n;

      }

    • 如何从键盘获取值:

      使用Scanner类

      步骤:

      1. 导包:import java.util.Scanner;

      2. Scanner的实例化 Scanner scan = new Scanner(System.in);//System.in指的是从键盘获取输入

      3. 调用Scanner类的相关方法,来获取指定类型的变量nextInt()(其他的数据类型类型同理)、next()(获取字符串)

        注意:需要根据相应的方法,来输入指定类型的值

    • 如何获取一个随机数:

      Math.random() -->返回一个[0.0,1.0)的double类型的值,如要得到整型需要强制类型转换

      如果想得到一个[a,b)的数,可以通过(int)(Math.random() * (b - a) + a)

  2. switch-case结构:
    switch(表达式){

    case 常量1:

    ​ 语句1;

    ​ //break;

    case 常量2:

    ​ 语句2;

    ​ //break;

    ……

    case 常量N:

    ​ 语句N;

    ​ //break;

    default:

    ​ 语句;

    ​ //break;

    }

  • 根据switch-case表达式中的值依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,执行里面的语句,在调用完执行语句后,仍会继续向下执行其他case结构中的执行语句(不会判断后面的情况直接执行),直到出现break关键字或者执行到末尾才会跳出,因此如果不想执行后面的执行语句需要每一个case里都加入break

  • switch结构中的表达式,只能是如下的6种数据类型之一:

    byte、short、char、int、枚举类型、String类型

  • case 后面只能声明常量,不能声明范围

  • break关键字是可选的,根据实际情况添加

  • default是上面的都不满足执行default中的语句,default结构是可选的,不是必须的,而且default的位置是可选的不一定非得放最后,但它仍然是最好考虑的

循环结构
  1. for循环

    for( 初始化条件; 循环条件; 迭代条件){

    循环体;

    }

    • 循环条件必须是boolean类型
    • 当初始化条件或者迭代部分有多个时,中间用,隔开
  2. while循环

    while(循环条件){

    循环体;

    迭代条件; //注意得加迭代部分否则会出现死循环

    }

  3. do-while循环

    do{

    循环体;

    迭代条件;

    }while();

  4. 无限循环

    while(true),for( ; ; )

  5. 循环嵌套

    一般为两个for循环嵌套,外层循环表示行,内层循环表示列

  6. 特殊关键字的使用:break和continue

    • break使用在switch-case结构和循环结构中,结束当前循环,默认跳出离关键字最近的循环
    • continue使用在循环结构中,结束当次循环
    • 注意:这两个关键字的后面都不能紧跟其他执行语句
    • 如果在循环嵌套中break在内层循环中想结束外层循环可以在外层循环的for前面加一个标签如label : for(),然后break关键字变成了 break label; continue同理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值