JSJ——主数据类型和引用
变量有两种:primitive主数据类型和引用。
Java注重类型。它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用“跳跃”这个方法会发生什么悲剧?并且它也不会让你将浮点数类型变量放进整数类型的变量中,除非你先跟编译器确认过数字可以损失掉精确度。
编译器会指出大部分的问题:
Rabbit happoer = new Giraffe();
谢天谢地,这样的程序过不了编译器这关
为了让类型安全能够发挥作用,你必须声明所有变量的类型,指定它是个int类型或是个Dog类型,变量有两种口味:清凉的primitive主数据类型和香辣的对象引用。primitive主数据类型用来保存基本类型的值,包括整数,布尔和浮点数等,而对象引用保存的是对象的引用。
你可以把Java的变量想成是杯子。咖啡杯、茶杯、装满啤酒的泡沫跟鱼缸一样大的巨无霸杯等等。
变量就像是被子,是一种容器,承装某些事务。
primitive主数据类型如同咖啡馆的被子,他们有不同的大小,而每种大小都有一个名称,像是“小杯”,“大杯”,“重量杯”等。
而在java中,primitive主数据类型也有不用的大小与名称。当你在Java中声明变量的时候,必须指定它的类型,类似:long-64、int-32、short-16、byte-8
要确保变量能存下所保存的值,不然会溢出。
我们可以根据以下规则来帮助类、方法或变量命名(真正的规则在实际上更为复杂,但这些规则就能够保证安全):
——名称必须以字母、下划线(_)或$符号开头,不能用数字开头
——除了第一个字符以外,后面就可以用数字。反正不要用在第一个字符就行。
——只要符合上述两条规则,你就可以随意地命名,但还要要避开Java的保留字。
事实上没有对象变量这样的东西存在
只有引用(reference)到对象的变量
对象引用变量保存的是存取对象的方法
它并不是对象的容器,而不是类似指向对象的指针。或者可以说是地址。但在Java中我们不会也不该知道引用变量中实际装载的是什么,它只是用来代表单一的对象。只有Java虚拟机才会知道如何引用来取得该对象。
Java注重类型,一旦数组被声明出来,你就只能装入所声明类型的元素。
变量有两种Lprimitive主数据类型和引用
变量的声明必须有类型和名称
primitive主数据类型变量值是该值的字节所表示的
引用变量的值代表位于堆之对象的存取方法
引用变量如同遥控器,对引用变量使用圆点运算符可以如同按下遥控器按钮般地存取它的方法或实例变量
JSJ——主数据类型和引用的更多相关文章
- 【Head First Java 读书笔记】(三)primitive主数据类型和引用
认识变量 变量有两种:primitive数数据类型和引用. 声明变量 Java注重变量.它不会让你将浮点数类型变量放进整数类型的变量中,除非你先跟编译器确认过数字可以损失掉精确度. 为了要让类型安全能 ...
- 转换primitive主数据类型
/*转换primitive主数据类型 * 短变长直接转换 * 长变短要强制转换 * 例如:long y = 42; int x = (int)y * String类型转换成primitive类型时可以 ...
- 对String值不可变的理解以及String类型的引用传递问题
今天复习java时,突然注意到了一句以前没有注意过的一句话,String 是final修饰的,其值是不可变的.当时看的一脸懵逼,String str = "abc"; str = ...
- 当我们有多个类 继承同一个父类 这时候使用多态时候 可以使用该父类的类型做引用 不需要将object做引用
当我们有多个类 继承同一个父类 这时候使用多态时候 可以使用该父类的类型做引用 不需要将object做引用
- Swift 关键字 inout - 让值类型以引用方式传递
两种参数传递方式 值类型 传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据. 引用类型 把参数本身引用(内存地址)传递过去,在调用的过程会影响原始数据. 在 Swift 众多数据类型中, ...
- 2.C++中的bool类型,三目运算符,引用
本章主要内容: 1)bool类型 2)三目运算符 3)引用 1.布尔型bool 在C++中,bool类型只有true(非0)和flase(0)两个值,且bool类型只占用了一个字节. 例如: #inc ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C++中的布尔类型和引用
1,C++ 中的布尔类型: 1,C++ 在 C 语言的基础类型系统之上增加了 bool: 1,C 语言中,没有 bool 类型存在,往往都是用整型代替 bool 类型,常用 0 表示假,用 1 表示真 ...
- 《head first java 》读书笔记
Updated 2014/03/26 P300-P402 Updated 2014/03/25 P213-300 Updated 2014/03/20 P0-P213 对象本身已知的事物被称为: 实例 ...
随机推荐
- Function Composition vs Object Composition
In functional programming, we create large functions by composing small functions; in object-oriente ...
- Visual Studio 开发(二):VS 2017配置FFmpeg开发环境
在上篇文章Visual Studio 开发(一):安装配置Visual Studio Code 中,我们讲了一下如何配置VS CODE,来编写和调试C的代码.如果你已经使用VS Code回顾和复习好C ...
- wordpress升级版本时出现错误“Maximum execution time of 30 seconds exceeded”
wordpress版本是4.9,之前升级5.0时就提示这个错误了,但因为我用的第三方主题,所以也没想去解决,也担心升级了wp版本后主题出问题. 现在wp版本已经到了5.2了,我闲着无聊就又点了升级,结 ...
- Java核心技术卷一基础知识-第7章-图形程序设计-读书笔记
第7章 图形程序设计 本章内容: * Swing概述 * 创建框架 * 框架定位 * 在组件中显示信息 * 处理2D图形 * 使用颜色 * 文本使用特殊字体 * 显示图像 本章主要讲述如何编写定义屏幕 ...
- 服务器端PHP允许跨域
解决跨域的关键是设置 Access-Control-Allow-Origin. 例如:客户端的域名是 api.itbsl.com,而请求的域名是www.itbsl.com 如果直接使用ajax访问,会 ...
- webpack入门-个人学习资源收集
本来是想自己写哈个人学习webpack心德的,不过网上现在已经有各种比较好的,详细的入门或者深入资源了. 所以我就简单总结了一下,我在入门webpack时看的一些博客和文档,以及顺道看到的一些觉得也应 ...
- SpringCache实战遇坑
1. SpringCache实战遇坑 1.1. pom 主要是以下两个 <dependency> <groupId>org.springframework.boot</g ...
- 大道至简第一章--java伪代码读后感
import java.大道至简.编程的精义; //愚公移山 public class 愚公移山 { public static void main(String[] args) { //惩山北之塞, ...
- 【PHP篇】运算及流程控制
算数运算: 1.运算符罗列: 算数运算符:[+].[-].[*].[/].[%].[++].[--] 赋值运算符:[=].[+=].[-=].[*=].[/=].[%=].[.=] 比较运算符:[&g ...
- Xamarin.Android 制作搜索框
前段时间仿QQ做了一个搜索框样式,个人认为还不错,留在这里给大家做个参考,希望能帮助到有需要的人. 首先上截图(图1:项目中的样式,图2:demo样式): 不多说直接上代码: Main.axml &l ...