【JavaSE---01】java语法 「数据类型 | 变量命名 | 不同进制赋值 | 类型转换 | 运算符 | 控制结构」

0. 基本事项

  1. 一个java源文件里必须定义一个与文件名相同的类,且该类用public修饰。此外,在该文件中还可定义若干个类,但是不能用public修饰。每个类都会生成一个class文件/字节码文件
  2. 可以将main方法写到非public类中
  3. 可以两个变量定义在一行。
    1. int a = 1, b = 2;
    2. int a, b = 1;
  4. 输入与输出:
    在这里插入图片描述
  5. 转义字符:
    1. \t:大空格,制表符
    2. \n:换行
    3. \\:打印出 \
    4. \":打印出 "
    5. \':打印出 ’
    6. \r:光标回到首行,再进行覆盖。比如:System.out.println(“美好的\r一天”) --> 一天的
      idea中是\r后面的内容替换前面的内容。比如:System.out.println(“美好的\r一天”) --> 一天
  6. 注释:
    1. 单行注释://
    2. 多行注释:/* */
    3. 文档注释:可以被JDK提供的工具javadoc所解析,生成说明文档。
      在这里插入图片描述
  7. 关于一些java内置工具
    1. javac.exe是编译.java文件
    2. java.exe是执行编译好的.class文件
    3. javadoc.exe是生成Java说明文档
    4. jdb.exe是Java调试器
    5. javaprof.exe是剖析工具

1. 变量

1.1 数据类型

在这里插入图片描述

  1. 关于初始值:

    1. 若在类的 全局位置,则 基本数据类型 和 引用数组类型都有默认值。
    2. 若在类的 局部位置(比如方法内,构造器内,代码块内) ,
      ① 则 基本数据类型引用数据类型中的类和接口都无默认值。不可使用这些变量,如果打印变量会报未初始化异常。
      ② 但是 引用数组类型中的元素 有默认值。
      在这里插入图片描述
      在这里插入图片描述
    3. 默认值:
      1. 基本数据类型都是0,boolean类型对应的就是false。
      2. 引用数据类型:nul
  2. 一旦在推中为其分配空间,此时打印变量,则调用的是toString()方法(若该类没有重写toString方法,则调用Object的)。

  3. 引用类型变量默认占 8 B。因为64b能完全覆盖内存。

细节:

  1. 对于1,2,3…这种整数默认是int型

    3个例外:

    1. -128 ~ 127可直接赋值给byte,如:byte a = 1;否则会报编译异常】**;
    2. -2^15 ~ 2^15-1,即 -32768 ~ 32767可直接赋值给short,否则会报编译异常】
    3. char可以赋值任意整型。
  2. long类型变量赋值时,在数值后加L/l。eg:long a = 10L;
  3. float类型变量赋值时,在数值后加F/f。eg:float a= 10F;
  4. double类型变量赋值时,可以在数值后面加D/d,也可以不加,即默认小数是double

但是对于其包装类的实例化时可以不加L或F或D。eg:Long a = new Long(10);

  1. 浮点数
    1. 可以使用科学技术法(只用于浮点)。eg:double a = 5.2e-2; // 5.2*10^(-2) = 0.052 对小数运算后进行相等判断时要小心。
    2. 不要使用浮点数进行比较。
      在这里插入图片描述
  2. 布尔型:布尔型变量命名时常加上is。如:boolen isEat = false;
  3. 字符
    在这里插入图片描述
    1. 字符的本质是数
      在这里插入图片描述
    2. 字符可以加减
      在这里插入图片描述
  4. 基本数据类型是 值传递,即复制内容;引用数据类型是 传递地址
    因为,赋值就是将内容复制过去,而引用数据类型的内容是地址,所以表现为传递地址。
    在这里插入图片描述

1.2 变量名命名

标识符命名:

  1. 字母、数字、_、$。但是不能以数字开头
  2. 不含空格、不能用关键字和保留字

1.3 不同进制赋值

进制表示:

  1. 二进制:0b或0B。eg:int a = 0b11; // a = 3
  2. 八进制:0。eg:int a = 013; // a = 11
  3. 十六进制:0x或0X。eg:int a = 0x13; // a = 19

1.4 类型转换

1.4.1 基本数据类型间的自动类型转换

  1. 自动转换① :
    在这里插入图片描述
  2. 自动转换② : byte、short、char相同类型或三者之间的运算,会将精度提高的int。
    在这里插入图片描述
  • 练习:
    在这里插入图片描述

1.4.2 基本数据类型间的强制类型转换

强制类型转换中注意计算机采用补码存放数据。

  1. ( )只对最近的数有效
    在这里插入图片描述
  2. 强制转换规则:
    1. 整数间:
      1. 大变小:补码:高位截断,低位保留。
      2. 小变大:补码:扩展符号位。
    2. 浮点数到整数:丢失小数位。
  • 细节:布尔类型不可以其他类型相互转换,如:
    在这里插入图片描述

1.4.3 引用类型与其他类型的转换

  1. 引用类型引用类型
    1. 一般不可以进行自动类型转换,除非是多态中的向上转型
    2. 一般不可以进行强制转换,除非是多态中的向下转型
  2. 包装类对应的基本数据类型间:可以自动相互转换
    在这里插入图片描述
  3. String基本数据类型
    1. 不可以进行自动转换,但是String类型与基本数据类型进行+操作会自动转为字符串。

      注意:String类型与基本数据类型进行+操作过程:

      1. 先将基本类型自动转为字符串
      2. 再进行字符串拼接
        在这里插入图片描述
    2. 不可以进行强制类型转换。

      注意:虽然String基本数据类型间不可以强制类型转换,但是可以使用方法进行类型转换

      1. . String->int:Integer.parseInt("1")
      2. int->String: 1 + ""
        在这里插入图片描述
  4. 除包装类和String外的引用数据类型基本数据类型:不可以进行自动类型转换,也不可以进行强制类型转换。

1.4.4 练习

在这里插入图片描述

2. 运算符

在这里插入图片描述

细节:

  1. a /= b 等价于 a = (强转为a类型) a / b 【++、+=等类似】
    在这里插入图片描述
  2. 三元表达式:变量 = 条件表达式 ? 表达式1 : 表达式2。条件表达式为true执行表达式1,反之执行表达式2。

    注意:三元运算符要看作一个整体,故其可能导致类型的自动转换。
    在这里插入图片描述

  3. i++ 与 ++i
    1. ① i++:先用后加:所在行语句执行完后,再执行++
      ② ++i:先加后用:先执行++,再执行所在行语句
      在这里插入图片描述
    2. i = ++ii = i++的结果与上面一致。
      技巧:将左边的i想象为不是i,则很容易得到结果
      原理:其内部是用了一个temp变量暂存数据,最后赋值给变量。
      在这里插入图片描述
  4. &&&
    1. 相同点:&&是短路与,&是逻辑与。运算结果一样。
    2. 区别:第一个为false,则&&不进行后续判断,效率高;而&还需要进行后续判断。故多使用&&。【 || 是第一个为true就不进行后续判断】
      在这里插入图片描述
    3. 例子:在后面逻辑中有赋值语句时,用逻辑与。
      在这里插入图片描述
  5. 取相反数的两种方式:
    在这里插入图片描述
  6. 在一行语句中可以随时赋值:因为赋值最后生效,若需要先生效,可以使用()
    在这里插入图片描述

练习
在这里插入图片描述

3. 控制结构

3.1 分支结构

  1. ifif-elseif - else if - else用于区间的情况
    1. { }内只有一条语句时,可以不用{ }
    2. 从上往下,满足一个分支,则不会再看下面的分支
  2. switch-case-break-default用于值确定的情况
    在这里插入图片描述
    1. switch的表达式只能是以下6种类型:byte、short、char、int、enum、String(因为小数不能用来比较相等)
    2. default 可以有,也可以没有
    3. 从上往下,满足一个分支,若没有使用break,会接着执行下一个case。常用于几个case内容相同的情况。
      在这里插入图片描述

3.2 循环结构

  1. for循环
    1. for(初始值; 表达式1; 表达式2) { }中可缺少成分,如:for( ; ; )
    2. 增强for循环(for-each循环):可用于数组或集合,底层使用的是迭代器实现遍历。
      语法:for(数据类型 变量名 : 数组或集合对象) { }

    for循环底层采用的是计组的随机访问;而for-each循环底层采用的是顺序访问。

  2. while:先判断,后执行
  3. do-while:先执行,后判断

注意:

  1. break打破对象是switch三个循环结构没有if
  2. continue结束本次循环,继续执行下一次循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值