变量要先赋值后使用

  • 不给变量赋值代表什么
  • 不赋值就使用会怎样 (会报错)

计算并赋值运算符

  • 作用是为了让代码更加简洁。比如 a = a + 10,可以简化为 a+=10
  • +=
  • -=
  • *=
  • /=
  • %=
  • &=
  • ^=
  • |=
  • <<=
  • >>=
  • >>>=
public class CalcAndAssign {
public static void main(String[] args) {
int a = 16;
a >>= 2;
System.out.println(a); // 此时a为4 a*=9;
System.out.println(a); // 此时a为36
}
}

数据类型自动转换

  • 自动类型转换

    • 不会出现问题的类型转换,编程语言可以做自动类型转换,比如低精度的数字向高精度的数字转换。
    • 自动类型转换可以发生在算数运算,也可以发生在赋值。
  • 数值精度顺序:double > float > long > int > short > byte
  • char 可以转换为 int
    • char 可以转换为 int
    • 虽然同样是两个 byte,但是因为 char 是无符号数,值域超出了 short 可以表示的范围,所以不可以自动转换为 short。
public class AutoConvert {
public static void main(String[] args) {
int intVal = 99;
long longVal = intVal;
long longVal2 = intVal + 1;
System.out.println(longVal2); float floatVal = 11.32f;
double doubleVal = floatVal;
double doubleVal2 = doubleVal * 2;
System.out.println(doubleVal2); int a = 99;
double b = 5;
System.out.println(a/b); char ch = 'A';
int chNum = ch;
int chNumCalc = ch + 10;
System.out.println(ch);
System.out.println(chNum);
System.out.println(chNumCalc);
}
}

强制数据类型转换

  • 可能出现问题的类型转换,需要使用强制类型转换,比如高精度向低精度数值转换。
  • 强制类型转换也是操作符。
  • 语法是用小括号括起来的目标类型放在被转换的值前面。
  • 强制类型转换会造成数据丢失
public class ForceConvert {
public static void main(String[] args) {
int intVal = 99;
long longVal = 19999;
intVal = (int)longVal; float floatVal = 11.32f;
double doubleVal = 3344556.789;
floatVal = (float) doubleVal; int A = 65;
char b = (char) A;
System.out.println(b);
}
}
public class ForceConvertValueLoss {
public static void main(String[] args) {
int intVal = 99;
long longVal = 5555555555555L;
intVal = (int) longVal;
System.out.println(intVal); float floatVal = 11.32f;
double doubleVal = 1234567890.123456;
floatVal = (float) doubleVal;
System.out.println(floatVal);
System.out.println(doubleVal);
}
}

数值溢出

  • 数值计算一旦溢出,结果将失去意义。比如两个正数会加出负数。(这是因为两个数相加超出了它们所属类型的范围,如果第一位刚好是1,那么就会被计算机认为是负数。)
  • 要对能够处理的值有个大概的估计。
public class CalcValueLoss {
public static void main(String[] args) {
int intVal = 2000000000;
System.out.println(intVal + intVal);
}
}

从数值计算溢出理解程序员和编程语言责任的分界线

  • 编程语言的作用

    • 编程语言负责按照语法执行
    • 编程语言负责和计算机交互
  • 程序员的任务
    • 程序员负责理解问题
    • 程序员负责理解程序,并将问题转换为程序
    • 编程语言不负责解决问题,程序员才是负责解决问题的

Java中的基本数据类型语法补充的更多相关文章

  1. Java中的变量数据类型补充

    Java中变量的数据类型的补充 变量按照数据类型进行分类 1.基本数据类型 数值型:①整数类型(byte,short,int,long)②浮点型(float,doubbe)③字符型(char)④布尔型 ...

  2. Java中的原生数据类型

    Java中的原生数据类型(Primitive DataType)共有8种: 1)整型:     使用int表示(32位).2)字节型: 使用byte表示(从-128到127之间的256个整数).3)短 ...

  3. JAVA中分为基本数据类型及引用数据类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

  4. 二、java中的基本数据类型

    总结: 1.java中的基本数据类型有byte.short.int.long;float.double;char;boolean. 2.基本数据类型与1相对应分别占1.2.4.8;4.8;2;1.(单 ...

  5. java中的基本数据类型一定存储在栈中吗?

    首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的. 下面让我们一起来分析一下原因: 基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型 ...

  6. java中的基本数据类型和引用数据类型

    java中基本数据类型有8种:byte,short,int,long,char,float,double,boolean 整型有四种:byte short,int,long byte:   1字节   ...

  7. JAVA中分为基本数据类型和引用数据类型区别

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

  8. java中8种数据类型和默认值所占字节数

    java 8种基本数据类型的默认值及所占字节数 通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge; 2 3 public class Ceshi { 4 int a; ...

  9. Java中的基本数据类型和引用类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

随机推荐

  1. IIS的部署(二)------虚拟目录的使用

    IIS的虚拟目录 一个站点的网页的存储位置目录是固定的,而且结构和物理保存网页的磁盘路径相同.例如:默认网页的存储位置是c:\inetpub\wwwroot,当访问localhost即访问c:\ine ...

  2. 关于进程,I/O模型的文章

    PHP类 http://rango.swoole.com/archives/508 Node https://github.com/DoubleSpout/threadAndPackage

  3. opencv:图像轮廓发现

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  4. Panda的学习之路(1)——series 和 Dataframe

    一.Series panda最基本的对象 # pandas的基础s=pd.Series([1,3,6,np.nan,44,1])#建立个简单的基本对象 类似一个一位数组print("建立个简 ...

  5. Go函数高级

    1. 函数的数据类型 package main import "fmt" func main() { /* go语言的数据类型: 基本数据类型: int,float,bool,st ...

  6. 【Angular】关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep

    [Angular]关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep css修改:无效 .ant-input-affix-wrapper .ant-input:not ...

  7. 【C语言】在有序数组中插入一个数,保证它依然有序

    #include<stdio.h> int main() { ] = { ,,,,,, }; int key, i, j; printf("请输入一个数\n"); sc ...

  8. docker容器虚拟化网络

    linux内核支持六种名称空间 1.主机名和域名  ------->  UTS 2.用户  -------->  User 3.文件挂载系统   ------->  mount 4. ...

  9. Ubuntu 16.04执行 sudo apt-get update非常慢解决方案

    ubuntu在执行更新apt包索引 sudo apt-get update 可能遇到更新非常慢或者部分包都忽略或错误 我们应该进入到系统设置>软件与更新 选择其他站点 选择最佳服务器 然后点击关 ...

  10. 深入delphi编程理解之消息(六)无窗口单元消息的创建、接受及dispatch模式编程

    一.程序界面 二.程序代码 (一).主界面代码 //========================================================================== ...