Java基础系列(8)- 数据类型
数据类型
强类型语言
要求变量的使用合乎规定,所有的变量都必须先定义才能使用。Java是强类型语言。
弱类型语言
变量定义比较随意,比如“12”+3,可以是int型123,也可以是String型123
Java数据类型
分为两大类:
基本类型(primitive type)
数值类型
整数类型
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:占两个字节,用'',声明一个字符,或者转义字符
boolean类型:占1位,其值只有true和false
引用类型(reference type)
- 类
- 接口
- 数组
// 整数
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)- 数据类型的更多相关文章
- Java基础系列1:深入理解Java数据类型
Java基础系列1:深入理解Java数据类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括四个 ...
- 夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
目录 目录 string基础 Java String 类 创建字符串 StringDemo.java 文件代码: String基本用法 创建String对象的常用方法 String中常用的方法,用法如 ...
- 夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 ...
- 夯实Java基础系列5:Java文件和Java包结构
目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...
- 夯实Java基础系列9:深入理解Class类和Object类
目录 Java中Class类及用法 Class类原理 如何获得一个Class类对象 使用Class类的对象来生成目标类的实例 Object类 类构造器public Object(); register ...
- 夯实Java基础系列13:深入理解Java中的泛型
目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...
- 夯实Java基础系列14:深入理解Java枚举类
目录 初探枚举类 枚举类-语法 枚举类的具体使用 使用枚举类的注意事项 枚举类的实现原理 枚举类实战 实战一无参 实战二有一参 实战三有两参 枚举类总结 枚举 API 总结 参考文章 微信公众号 Ja ...
- Java工程师学习指南第1部分:夯实Java基础系列
点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 本文整理了微信公众号[Java技术江湖]发表和转载过的Java优质文章,想看到更多 ...
- Java基础系列1:Java基本类型与封装类型
Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...
- Java基础系列2:深入理解String类
Java基础系列2:深入理解String类 String是Java中最为常用的数据类型之一,也是面试中比较常被问到的基础知识点,本篇就聊聊Java中的String.主要包括如下的五个内容: Strin ...
随机推荐
- 22javascript笔记(2)
JavaScript 1.js事件和作用域 js事件:html页面中每一个元素都可以产生某些触发js函数的事件.这些事件是可以被js侦测到的一种行为,并且js程序能应对这些事件. 常见的html事件 ...
- miniFTP项目集合
项目简介 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进 ...
- ☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!
问题概括 静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定,所以Java针对某些情况制定了常量优化机制. 常量优化机制 给一个变量赋值,如果等于号的右边是常量的表达 ...
- NOIP 模拟 $12\; \text{简单的填数}$
题解 一个纯的贪心,被我搞成 \(dp\) 了,最后把错解删掉了,骗了 \(10pts\) 考虑如何贪心,设置一种二元组 \((x,l)\),\(x\) 表示当前值,\(l\) 表示当前最长连续长度. ...
- kivy之CheckBox属性实操学习
checkbox部件属性不多,本练习举例了单选,复选二种方式,并将各checkbox进行id命名,每个都绑定了相同的动作,具体大家可以看源码进行学习. 先在开发工具pycharm里新建一个项目,然后新 ...
- css生成彩色阴影
通常用css生成单色或者同色系的的阴影(box-shadow),其实可以通过巧妙的利用 filter: blur 模糊滤镜,可以生成渐变色或者说是颜色丰富的阴影效果,如图: 原理: 利用伪元素,生成一 ...
- 【java虚拟机】jvm调优
转自:https://www.cnblogs.com/starhu/p/6400348.html?utm_source=itdadao&utm_medium=referral 堆大小设置JVM ...
- excel控件只为简单写入数据表--github找到ExcelUtil笔记
github地址 https://github.com/SargerasWang/ExcelUtil 文档地址 https://sargeraswang.com/blog/2018/11/27/exc ...
- ES6中class的继承
extends 子类的继承 super(); 调用父类的构造方法,只能在子类中执行 继承可以让子类获得父类的方法 属性,可以扩充 增加新的方法 属性等 父类(基类)--被继承的类 子类--继承后的类 ...
- 手撕LRU缓存了解一下
面试官:来了,老弟,LRU缓存实现一下? 我:直接LinkedHashMap就好了. 面试官:不要用现有的实现,自己实现一个. 我:..... 面试官:回去等消息吧.... 大家好,我是程序员学长,今 ...