认识变量—primitive主数据类型和引用

变量有两种:primitive主数据类型(用来保存基本类型的值:整数、布尔、字符和浮点型)和引用

1.声明变量

eg:int count;
规则:
1)变量必须拥有类型
2)变量必须要有名称
primitive主数据类型:
boolean 位数由JVM决定 true或false
char 16bits 0~65535
byte 8bits -128~127
short 16bits -32768~32767
int 32bits -2147483648~2147483647
long 64bits -很大~+很大
float 32bits 范围规模可变
double 64bits 范围规模可变
primitive主数据类型的声明与赋值声明:
int x=234;
byte b=89;
boolean isFun=true;
double d=3456.78;
char c=‘f’;
long big=3456789;
float f=32.5f;(注意必须加上f才可以代表float类型,否则默认为double)

2.变量的命名规则

1)名称必须以字母、下划线(_)或$符号开头,不能用数字开头
2)除了第一个字符之外,后面就可以用数字。反正不要再第一个字符就可以了。
3)只要符合上述两条规则,你就可以随意命名,但还得要避开Java的保留字。
保留字是编译器要辨别的关键字。如果你想恶搞编译器,就试试看用保留字来命名。
保留字有:public static void boolean char byte short int long float double等等

3.对象引用

1)事实上没有对象变量这样的东西存在
2)只有引用(reference)到对象的变量
3)对象引用变量保存的是存取对象的方法
4)它并不是容器,而是类似指向对象的指针。或者可以说是地址。但在Java中我们不会也不知道引用变量中实际装载的是什么,
它只是用来代表单一的对象。只有Java虚拟机才会知道如何使用引用该对象。
primitive主数据类型变量是以字节来代表实际的变量值,但对象引用变量却是以字节来表示取得对象的方法。
你会使用圆点运算符(.)来对引用变量表示:取得圆点前面的对象,然后求出该对象在圆点后面的事物。
eg:Dog myDog = new Dog();
myDog.bark();代表名为myDog的变量引用对象上的bark()

4.对象的声明、创建与赋值有三个步骤:

1)声明一个引用变量:Dog myDog(要求Java虚拟机分配空间给引用变量,并将此变量命名为myDog,此变量将永远被固定为Dog类型)
2)创建对象:new Dog()(要求Java虚拟机分配堆空间给新建立的Dog对象)
3)连接对象和引用:=(将新的Dog赋值给myDog这个引用变量)

5.数组

(1)创建整型数组
1)声明一个int数组变量。数组变量是数组对象的遥控器。
int[] nums;
2)创建大小为7的数组,并将它赋值给之前的声明的int[]的变量的nums
nums = new int[7];
3)赋予int数组的每一个元素一个int值。要记得在int数组中的每个元素皆为int类型的变量。
nums[0]=6;
nums[1]=19;
nums[2]=44;
nums[3]=42;
nums[4]=10;
nums[5]=20;
nums[6]=1;
数组也是对象(如果需要快速、有序、有效率地排列元素时,数组是个不错的选择。数组能够让你使用位置索引来快速、随机地存取其中的元素)
(2)创建Dog数组
1)声明一个Dog数组变量
Dog[] pets;
2)创建大小为7的Dog数组,并赋值给前面所声明出的Dog[]类型变量pets
pets = new Dog[7];
3)创建新的Dog对象并将它们赋值给数组的元素。记得Dog数组中只带有Dog的引用变量。我们是需要Dog对象!
pets[0] = new Dog();
pets[1] = new Dog();
Java注重类型:一旦数组被声明出来,你就只能转入所声明类型的元素。

public class Dog {String name;public static void main(String[] args) {//创建Dog对象Dog dog1 = new Dog();dog1.bark();dog1.name = "Bart";//创建Dog数组Dog[] myDogs = new Dog[3];//关门放狗myDogs[0] = new Dog();myDogs[1] = new Dog();myDogs[2] = dog1;//通过数组引用存取DogmyDogs[0].name = "Fred";myDogs[1].name = "Marge";System.out.println("last dog's name is");System.out.println(myDogs[2].name);//逐个对Dog执行bark()int x = 0;while(x<myDogs.length){myDogs[x].bark();x=x+1;}}private void bark() {System.out.println(name+" say Ruff!");}public void eat(){}public void chaseCat(){}
}

6.要点

1)变量有两种: primitive主数据类型和引用
2)变量的声明必须有类型和名称
3)primitive主数据类型变量值是该值的字节所表示的
4)引用变量的值代表位于堆之对象的存取方法
5)引用变量如同遥控器,对引用变量使用圆点运算符可以如同按下遥控器按钮般地存取它的方法或实例变量
6)没有引用到任何对象的引用变量的值为null值
7)数组一定是个对象,不管所声明的元素是否为primitive主数据类型,并且没有primitive主数据类型的数组,只有装载primitive主数据类型的数组

认识变量---primitive主数据类型和引用相关推荐

  1. java primitive 放在哪_primitive主数据类型的包装类

    JAVA在5.0版本之后之后给每一个primitive主数据类型(除了char)都准备了一个包装类, int→Integer:long→Long:byte→Byte:short→Short:float ...

  2. Java之主数据类型的包装

    所谓的主数据类型的包装,就是需要以对象的方式来处理primitive主数据类型时,就把它包装起来,这个的前提是Java 5.0以上的版本.每一个primitive主数据类型都有个包装用的类,且因为这些 ...

  3. java中equals方法的参数_equals方法的参数必须为Object类型的引用变量

    核心结论:子类重写Object类的equals方法需要注意的事项 重写的时候一定要注意equals方法的参数是Object obj类型的引用变量.绝对不可以是其他类型的变量.因为这样的话,和父类Obj ...

  4. PHP内核探索之变量(2)-理解引用

    PHP内核探索之变量(2)-理解引用 原文:PHP内核探索之变量(2)-理解引用 本文主要内容: 引论 符号表与zval 引用原理 回到最初的问题 一.引论 很久之前写了一篇关于引用的文章,当时写的寥 ...

  5. Python变量和对象类型速记手册

    变量和对象类型 Python中关于变量和对象类型有一些重要的概念: 变量不受类型约束 变量并不是一块内存空间的标签,只是对象的名字,是没有类型的,相当于一个可以指向任何对象void指针.类型属于对象, ...

  6. C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype

    1.constexpr和常量表达式 1.1 常量表达式 定义:变量的值在编译器的时候就可以得到是一个常量 eg. const int i = 0; 1.2 constexpr变量 让编译器来验证变量的 ...

  7. Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]    目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...

  8. C++const类型的引用参数

    C++const类型的引用参数: 具体作用,假设实参的参数类型与引用参数不匹配,但可以转换为引用类型,程序将创建一个正常类型的临时变量,使用转化后的实参值来初始化它,然后传递一个指向该临时变量的引用. ...

  9. Chapter2(变量和基础类型)--C++Prime笔记

    数据类型选择的准则: ①当明确知晓数值不可能为负时,选用无符号类型. ②使用int执行整数运算.在实际应用中,short常常显得太小而long一般和int有一样的尺寸.如果运算范围超过int的表示范围 ...

最新文章

  1. 8坨穿越千年的便便,让哈佛科学家找到治疗糖尿病的线索 | Nature
  2. java和python哪个好就业2020-Python和java哪个就业前景好些?
  3. python培训学校-培训Python学校哪家好?推荐老男孩IT培训机构
  4. [BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)
  5. 四种方法使Map线程安全
  6. 图文并茂重新认识下递归
  7. JS之获取指定位置Unicode的charCodeAt()方法
  8. 【POJ - 3126】Prime Path(bfs)
  9. php类的举例,用类来代替递归方法,用php举例_php _ 搞代码
  10. Android平台的用户行为记录解决方案
  11. Java——类和对象
  12. linux 负载高ssh连不上,关于ssh连不上问题的解决方法(必看)
  13. TCP ACK的pingpong交互模式
  14. camtasia怎么在视频上添加图片
  15. 为什么PRD写的Low?你看图文、支付、数据、登录、按钮……藏了多少猫腻!(文末送44页淘宝PRD)...
  16. Go语言学习14-基本流程控制
  17. 【R语言】使用leaflet绘制沈阳地铁线路图——R实训第六次作业
  18. 【陈工笔记】# 汇总人工智能大赛,提升个人竞技能力 #
  19. CRC循环冗余校验---模2除法解析
  20. Grub 命令行启动Windows全过程

热门文章

  1. 神经网络和深度学习(一)
  2. 微信小程序设置backgroundColor背景色没有改变
  3. “探索未来:VR全景直播技术引领新媒体时代”
  4. win10不用进入安全模式卸载avast free antivirus
  5. MOCTF-WEB-writeup
  6. android 类似充值界面,Android学习之RecylerView实习仿支付宝充值界面
  7. 领导做这几件事,要注意了
  8. 项目变更控制委员会(CCB)
  9. 快手6.8版本sig3算法破解
  10. 0.1+0.7= 0.7999999999999999