数据类型

强类型语言

要求变量的使用合乎规定,所有的变量都必须先定义才能使用。Java是强类型语言。

弱类型语言

变量定义比较随意,比如“12”+3,可以是int型123,也可以是String型123

Java数据类型

​ 分为两大类:

  • 基本类型(primitive type)

    1. 数值类型

      • 整数类型

        1.)byte:占一个字节,范围:-128~127

        2.)short:占两个字节,2的15次,范围:-32768~32767

        3.)int:占四个字节,2的31次,范围:-2147483648~2147483647

        4)long:占八个字节,2的63次,范围:-9223372036854775808~9223372036854775807

      • 浮点类型

        1.)float:占四个字节,单精度,尾数可以精确到7位有效数字,范围:-3.403E38~3.403E38

        2.)double:占八个字节,双精度,精度是float的两倍,范围:-1.798E308~1.798E308

      • 字符类型

        1.)char:占两个字节,用'',声明一个字符,或者转义字符

    2. boolean类型:占1位,其值只有true和false

  • 引用类型(reference type)

    1. 接口
    2. 数组
// 整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; // long类型需要在数字的后面加一个L或l,以做声明。如果不做声明,会以int类型取存数据,在把数据自动装换为long。 long l1 = 2147483649; //不加L,编译会报错
long l2 = 2147483649L; // 正常编译 // 浮点数(小数)
float num5 = 50.1F; // float类型需要在数字的后面加一个F,因为java的浮点型常量默认是double,所以声明float时要加F或f float f1 = 32.2; //报错,因为不加f,会被认为时double,而double转float需要强制转换,所以报错。 double num6 = 3.12321312321321321321321321321312312; // 字符,只能是一个字符
char name = 'A'; // 不能是AA 字符用''
char myByte = '\n'; // 转义字符也用''
// 字符串,String不是关键字,是类,字符串用""
String namea = "ssm";

// 布尔值
boolean flag = true;
boolean flag = false;

Q:为什么float和int都是4个字节,但是float表示的范围更大,而且还可以表示小数点?
https://zhuanlan.zhihu.com/p/84453627

位和字节

Q:什么是位?

位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。

Q:什么是字节?

字节(byte):是计算机 数据处理 的基本单位,习惯上用大写的B来表示。

1024B = 1KB

1024KB = 1M

1024M = 1G

1024G = 1TB

Q:位和字节的联 系

1B(byte,字节)= 8bit(位)

Q:什么是字符?

是指计算机中使用的字母、数字、字、和符号。

整数拓展

// 二进制0b 十进制 八进制0 十六进制0x 
int i = 10;
int i2 = 010; // 八进制
int i3 = 0x10; // 十六进制0x

浮点数

最好完全避免使用浮点数进行比较,银行业务避免使用浮点数,可以使用BigDecimal(数学工具类)

// float  存在误差
// 最好完全避免使用浮点数进行比较 float f1 = 0.1F;
double d1 = 0.1/10;
System.out.println(f1 == d1); // false float f2 = 2132132132132232F;
float f3 = f2 + 1;
System.out.println(f2 == f3); // true

字符

// 强制转换 (int)
char c1 = 'a';
char c2 = '沈';
System.out.println((int)c1);
System.out.println((int)c2); // 转义字符
// \t \n....

Java基础系列(8)- 数据类型的更多相关文章

  1. Java基础系列1:深入理解Java数据类型

    Java基础系列1:深入理解Java数据类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括四个 ...

  2. 夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!

    目录 目录 string基础 Java String 类 创建字符串 StringDemo.java 文件代码: String基本用法 创建String对象的常用方法 String中常用的方法,用法如 ...

  3. 夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理

    目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 ...

  4. 夯实Java基础系列5:Java文件和Java包结构

    目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...

  5. 夯实Java基础系列9:深入理解Class类和Object类

    目录 Java中Class类及用法 Class类原理 如何获得一个Class类对象 使用Class类的对象来生成目标类的实例 Object类 类构造器public Object(); register ...

  6. 夯实Java基础系列13:深入理解Java中的泛型

    目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...

  7. 夯实Java基础系列14:深入理解Java枚举类

    目录 初探枚举类 枚举类-语法 枚举类的具体使用 使用枚举类的注意事项 枚举类的实现原理 枚举类实战 实战一无参 实战二有一参 实战三有两参 枚举类总结 枚举 API 总结 参考文章 微信公众号 Ja ...

  8. Java工程师学习指南第1部分:夯实Java基础系列

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 本文整理了微信公众号[Java技术江湖]发表和转载过的Java优质文章,想看到更多 ...

  9. Java基础系列1:Java基本类型与封装类型

    Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...

  10. Java基础系列2:深入理解String类

    Java基础系列2:深入理解String类 String是Java中最为常用的数据类型之一,也是面试中比较常被问到的基础知识点,本篇就聊聊Java中的String.主要包括如下的五个内容: Strin ...

随机推荐

  1. 用三个while循环和tkinter实现一个显示屏

    用三个while循环和tkinter实现一个显示屏 import tkinter as tk import time # 输入框是跟程序打交道的一个途径,例如程序要求你输入账号密码,那么它就需要提供两 ...

  2. pikachu Over Permission

    Over Permission 如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作. 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的. 一般越 ...

  3. Pytest-Allure报告的Logo的完美定制

    --本次需求:如何把生成的pytest-allure报告的logo修改成自定义的logo? --步骤如下: --1.找到本地电脑安装的allure-2.13.2路径E:\allure-2.13.2\p ...

  4. 为何要打印日志?C++在高并发下如何写日志文件(附源码)?

    为何要打印日志?让程序裸奔不是一件很快乐的事么? 有些BUG就像薛定谔的猫,具有波粒二象性,当你试图去观察它时它就消失了,当你不去观察它时,它又会出现.当你在测试人员面前赌咒发誓,亲自路演把程序跑一遍 ...

  5. join控制线程的执行循序 T1 -> T2 -> T3

    /** * 控制线程的执行循序 T1 -> T2 -> T3 * join实现 */ public static void join(){ Thread t1 = new Thread(( ...

  6. [ES6深度解析]13:let const

    当Brendan Eich在1995年设计了JavaScript的第一个版本时,他犯了很多错误,包括从那时起就成为该语言一部分的一些错误,比如Date对象和当你不小心将它们相乘时对象会自动转换为NaN ...

  7. java String数组城市

    String[] citys = {"北京","天津","河北","山西","内蒙古"," ...

  8. GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组

    1 drop table orders; 2 create table orders ( 3 o_id int auto_increment primary key, 4 orderdate date ...

  9. MFC 绘制坐标系

    主要讨论映射模式:MM_ANISOTROPIC,MM_ISOTROPIC.及相关方法的应用. 1,先建立一个MFC单文档,过程不再赘述. 2,在View类中找到CMainFrame::PreCreat ...

  10. js 中连续的 3 个点 three dots (...) in javascript

    这个叫扩展运算符 https://dev.to/sagar/three-dots---in-javascript-26ci 5 种用法 1 function myFunc(...[x, y, z]) ...