Java 学习之路(十)- 基本数据类型的更多语法点

变量要先赋值后使用

int a = 0; // 声明变量需要初始值
int b = a + 1;
int a; 
int b = a + 1; // 报错

计算并赋值运算符

作用是为了让代码更简洁。比如 a=a+10; ,可以简化为 a+=10;

  • +=
  • -=
  • /=
  • *=
  • %=
  • &=
  • ^=
  • |=
  • <<=
  • >>=
  • >>>=
int a = 16;
a >>= 2;
System.out.println(a); // 4, a 的值被重新赋值了

a *= 9;
System.out.println(a); // 36

数据类型自动转换

自动类型转换

  • 不会出现问题的类型转换,编程语言可以做自动类型转换。比如低精度的数字向高精度的数字转换。
  • 自动类型转换可以发生在算数运算,也可以发生在赋值
int intVal = 99;
long longVal = intVal; // 低精度到高精度
long longVal2 = intVal + 1;
System.out.println(longVal); // 99
System.out.println(longVal2); // 100
int a = 99;
int b = 5;
System.out.println(a / b); // 19,除法不会自动类型转换
int a = 99;
double b = 5;
System.out.println(a / b); // 19.8

数值精度顺序

double > float > long > int > short > byte

char 可以转换为 int

虽然同样是两个 byte,但是因为 char 是无符号数,值域超出了 short 可以表示的范围,所以不可以自动转为 short

char ch = 'A';
int chNum = ch;
int chNumCalc = ch + 10;
System.out.println(ch); // 65
System.out.println(chNum); // 65
System.out.println(chNumCalc); // 75

强制类型转换

  • 可能出现问题的类型转换,需要使用强制类型转换。比如高精度数值向低精度数值转换。
  • 强制类型转换也是操作符
  • 语法是用小括号括起来的目标类型放在被转换的值前面
  • 强制转换会造成数据精度丢失
int intVal = 99;
long longVal = 19999;

// 报错,提示
// intVal = longVal; 

// 强制类型转换
intVal = (int) longVal; 

float floatVal = 11.23f;
double doubleVal = 3333.88;
floatVal = (float) doubleVal;

int a = 65 + 10;
char b = (char) a;
System.out.println(b); // K
int intVal = 99;
long longVal = 5555555555555L;
intVal = (int) longVal;
System.out.println(intVal); // -2132125469 , 数据精度丢失

float floatVal = 11.32f;
double doubleVal = 1234567890.123456;
floatVal = (float) doubleVal;
System.out.println(floatVal); // 1.23456794E9 , 数据精度丢失
System.out.println(doubleVal); // 1.234567890123456E9 

数值溢出

  • 数值计算一旦溢出,结果将失去其原有意义。比如,两个正数会加出负数。
  • 要对能够处理的值有大概的估计。
int intVal = 2000000000;
System.out.println(intVal + intVal); // -294967296 , 超出 int 最大值,数值溢出

从数值计算溢出理解程序员和编程语言

编程语言的作用

  • 编程语言负责按照语法执行
  • 编程语言负责和计算机交互

程序员的任务

  • 程序员负责理解问题
  • 程序员负责理解程序,并将问题转换为程序
  • 编程语言不负责解决问题,程序员才负责解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值