跟着老侯玩编程 跟着老侯玩编程
首页
  • 基础语法
  • 网络编程
  • 设计模式
  • 基础篇
  • 进阶篇
  • 框架篇
  • Redis
  • Alibaba
  • 课程目录
  • 码农宝典
留言
首页
  • 基础语法
  • 网络编程
  • 设计模式
  • 基础篇
  • 进阶篇
  • 框架篇
  • Redis
  • Alibaba
  • 课程目录
  • 码农宝典
留言
  • 基础篇

    • 聊聊环境变量
    • 永不过时的HelloWorld
    • 标识符
    • 数据类型
      • Java中的数据类型
      • 基本数据类型
        • 类型转换
      • 引用数据类型
      • 最后
    • 运算符
    • 语句
    • 数组
    • 方法详解
    • 类和对象
    • 类的成员
    • 类的继承
    • 类的形式
    • 封装和多态
    • 接口和Lambda表达式
    • 泛型编程
    • 常用API之函数式接口
    • 常用API
    • 异常机制
    • 多线程
    • 常用API之File类
    • IO流
    • 集合
    • 常用API之Stream流
    • 网络编程
    • 枚举
    • 注解和反射
  • 进阶篇

    • MySQL基础
    • 数据库-JDBC
    • HTML基础
    • CSS基础
    • JavaScript-基础
    • 服务器-Servlet
    • 服务器-Servlet3
    • 动态网页-JSP
    • Ajax
    • 前端项目工程化
    • ECMA2015
    • 模块化规范
  • 框架篇

    • 工具-Maven
    • 框架-MyBatis
    • 框架-Spring
    • 框架-SpringMVC
    • 工具-SpringBoot
    • 工具-Nginx
  • Java
  • 基础篇
舞动的代码
2022-05-17
目录

数据类型

数据类型是学习编程无法绕开的一个知识点,对于初学编程的人来说可能很难或者说很难理解。其实在学习过程中我们很容易忽视一个问题,为什么使用数据类型?

不知道大家在初次接触编程的时候有没有考虑过这个问题,至少当年我想过,只是没有想明白而已。当然这么多年过去了,对这个问题我有了自己的理解,下面容我阐述一二

当计算机运行时数据肯定是需要有地方存储的,而常见的存储设备一共有两个硬盘和内存条,而由于一些列的原因硬盘的读写速度无法和内存相媲美,所以解决方案为硬盘存储永久性的数据,而内存存储临时性数据。

程序运行肯定会产生一些临时性的数据,这些数据的存储位置毫无疑问的是内存条,所以我们抛开硬盘不谈,单独聊一下内存条。我们知道内存的容量并不是无上限的,那么如何合理的使用这个有限的空间就成了一个问题,而数据类型的引入只是解决这个问题的办法之一

在编程语言中针对数据类型存在两种分类弱类型和强类型,关于常见语言关于类型的分类有一张图

Java很明显是属于强类型语言的,在这里我并不是要规避什么问题,如果想要彻底搞明白这些问题我们可能还需要学习一下编译原理,但这个暂时不是我们的讨论内容

# Java中的数据类型

我们作为初学者在这里其实并不需要刻意的去记忆什么,仅仅是对即将学习的类型在内心有一个印象即可,关于类型的分类情况如下图所示

# 基本数据类型

基本数据类型,也称内置类型,是可以在栈直接分配内存的,Java保留基本数据类型最大的原因也在此。

Java是基于JVM的,所以,其所占字节固定,与机器平台无关,所有地方统一占用内存大小(除了boolean,以及byte、short、boolean数组的时候每个单元所占的内存是由各个JVM自己实现的)

# 类型转换

类型转换是我们应该尽力避免出现的情况,当然在避无可避的时候我们还是需要的。

转换规则:

  • 自动转换:取值范围(表数范围)小的向取值范围大的数据类型转换,Java能实现自动转换

  • 强制转换:取值范围大的向取值范围小的转换,需要强制转换,强制转换容易出现精度丢失

注意事项:

  • boolean不参与类型转换

  • byte、short、char如果转换的需要先转成int然后再转

# 引用数据类型

也称对象变量类型(其实我更喜欢称为自定义数据类型),复合数据类型,包含类、接口、数组(除了基本类型外,就是引用类型)。

//基本数据类型
int a = 5;

//引用数据类型
Object o = new Object();

1
2
3
4
5
6

我不知道如何怎么表达二者的区别,只能通过代码来进行描述

聊引用数据类型不可避免的需要说到对象,但这个话题在此处说起很明显超纲了

# 最后

很多人说Java没有指针,而指针则是C语言的灵魂。其实我不是太认同,对象的引用,其实质同指针一样(可以理解为受限制的指针),存放的是一个地址,至于是实例对象的地址,还是一个指向句柄池的地址则完全是看各个JVM的实现了

标识符
运算符

← 标识符 运算符→

Theme by Vdoing | Copyright © 2013-2023 冀ICP备16006233号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×