java语法基础

常量

  • 常量 : 在程序执行过程中,其值不能改变

Java中常量的分类

  • 字面值常量
  • 自定义常量
字面值常量的分类
  • 字符串常量 用双引号括起来的内容
  • 整数常量 所有整数
  • 小数常量 所有小数
  • 字符常量 用单引号引起来的内容 里面只能是单个字符
  • 布尔常量 true 和 false
  • 空常量 null

进制 (scale)

  • 二进制 以0b开头
  • 八进制 以0开头
  • 十六进制 0x开头

变量

  • java 是强类型语言,对每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间

  • 基本数据类型

  • 引用数据类型

    • 基本数据类型
    1. 整数型
  • byte 占一个字节 -128 ~ 127

  • short 占两个字节 -215~215-1

  • int 占四个字节 -231~231-1

  • long 占八个字节 -263~263-1

    1. 浮点型
  • float 占四个字节

  • double 占八个字节

    1. 字符型
  • char 占两个字节 0~65535

    1. 布尔型
  • boolean

    • boolean 理论上占八分之一个字节
      但是java中boolean没有明确说明它的大小

注意

    • 小数默认是double 若是float 需要在数后面加一个f
  • long类型后面最好加一个L

  • 局部变量在使用前必须赋值

  • 强制转换
    比如

int t ;
byte b;
b = (byte)(t+b);
// 整型t去掉前三个八位 变为byte型进行运算
// 向下强制转换可能会损失精度

原码 反码 补码

  • 计算机实际运算的时候都是以补码形式进行运算的
  • 原码 就是二进制表示法 最高位是符号位 0表示正 1表示负

  • 反码 正数原返补都相同 负数反码除了符号位逐位取反

  • 补码 正数原返补都相同 负数补码在反码末位上加1

运算只取8 位 进位超出的不要

image.png

测试题

检查下面的程序是否有问题

byte b1 = 3;
byte b2 = 4;
byte b3 = b1+b2;
byte b4 = 3 + 4;

编译报错

  • 两个方面
  1. 整数默认类型是int 浮点数默认是double byte short char 都会提升为int进行计算 两个int相加也是int

  2. b1 b2 是两个变量 变量存储的值是变化的 编译的时候无法判断里面的值 (只有运行的时候才可以知道多大 )相加有可能超过byte的取值范围

b4为啥不报错

java编译器有常量优化机制 在编译过程中就能把3+4取到算出来 在byte范围内就可以直接赋值过去

long 占 8 位 float占4位 float 和long 谁大谁小 ?

float 比 long 能存的数大很多(不考虑小数精度啥的 单纯比较大小)

字符串

任何数据类型用 + 与字符串相连接都会产生新字符串

字符

java中的char 0~65535
java中的charUnicode编码 占用两个字节 一个中文汉字也是两个字节 所以可以存储一个中文汉字.

测试题

问哪行报错

short a;
a=a+1;
short b;
b+=1;

解答:
第二行 会报丢失精度的错误
b+=1隐含了强制转换 // 相当于 b=(short)(b+1);

关系运算符

得到true 或者 false

你可能感兴趣的:(java语法基础)