1.小心别溢出来。

要确保变量能存下来所保存的值。

你无法用小杯子装大值。好吧,其实可以,但是会损失某些信息,也就是所说的溢位。当判断到所使用的容器不足以装载时,编译器会试着防止珍重情况发生。举例来说,你无法使用像下面这样的把int大小的东西装进byte的容器中:

int x = 24;

byte b = x;   //不行。

你可以用以下几种方式来给变量赋值:

1.在等号后面直接打出(x = 12,isGood = true)

2.指派其他变量的值(x = y)

3.上述两种方式的组合。(x = y + 43)。

下面粗体字部分是直接打出值的例子:

int size = 32; int 类型的32,名称为size

char initial = ‘j’; char类型的'j',名称为initial

int y  = x  + 456; 名称为y的int类型变量,其值为x与456相加运算的结果

避开关键字:(keyword)!

你已经知道变量需要名称和类型。

你已经知道什么是primitive主数据类型。

boolean  byte  char  double   float   int  long  short

public private protected  abstract final native  static  strictfp

sybchronized  transient  volatile  if  else  do  while  switch  case  default  for  break  continue  assert

class extends  implements  import  instanceof   interface  new  package  super  this  catch  finally  try  throw  throws

return void  const  goto  enum 这些是Java的保留字,如果你把它们用在名称上面,编译器会列出混乱的结果。

二、对象引用

控制Dog对象  你已经知道要如何声明primitive主数据类型并赋值给它。但非primitive主数据类型的变量又该如何处理呢?换句话说,对象要怎么处理呢?

1.引用变量不知道大小(根据Java虚拟机有关。);

2.引用变量都具有相同的大小,而不管它实际上所引用的对象大小。

3.不可以对引用变量进行运算。

数组犹如杯架

1.声明一个int数组变量。数组变量是数组对象的遥控器。

int[] nums;

2.创建大小为7的数组,并将它赋值给之前声明为int[] 的变量nums。

nums = new int[7];

3.赋予int数组的每一个元素一个int值。要记得在int数组中的每个元素皆为int类型的变量。

数组也是对象

Java的标准函数库包含了许多复杂的数据结构,比如map、tree、和set(见附录B),但如果需要快速、有序、有效率地排列元素时,数组是不错的选择。数组能够让你使用位置索引来快速、随机地存取其中的元素。

在上面的图中有一项要注意的:数组是个对象,不管里面放的是不是primitive主数据类型。

无论被声明来承载的是primitive主数据类型或对象引用,数组永远是对象。但你可以声明出可以装载primitive主数据类型值的数组。换句话说,数组对象可以有primitive主数据类型的元素,但数组本身绝对不会是primitive主数据类型。不管数组带有什么,它一定是对象!

1.Dog [] = pets;

2.pets = new  Dog[7];

3.pets[0] = new Dog();

pets[1] =  new Dog();

pets[2] = new Dog();

Dog[] myDogs =new Dog[3];

myDogs[0] = new Dog();

myDogs[1] = new Dog();

myDogs[2] = new Dog();

myDogs[0].name = "Fido";

myDogs[0].bark();

此处的说明还未用到封装的概念,我们会在第4章中加以讨论。

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;

//通过数组引用存取Dog

myDog[0].name = "Fred";

myDog[1].name = "Marge";

System.out.print(" last dog's name is ");

System.out.print(myDogs[2].name);

int x = 0;

while(x < myDogs.length){

myDog[x].bark();

x = x + 1;

}

}

public void bark(){

System.out.print(name  + " says Ruff! ");

}

}

Java数据类型(primitive)原始数据类型的更多相关文章

  1. Java 原始数据类型

    如何记住 Java 中的原始数据类型? 画了一个图方便记忆:

  2. 1 Java学习之 基本数据类型

    1. 基本概念 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的.简单的,各种数据类型都需要在学习 ...

  3. js原始数据类型和引用数据类型=>callback数据传输原理

    摘要:js的数据类型有种划分方式为 原始数据类型和 引用数据类型. 原始数据类型 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置.栈区包括了 变量的标识符和变量的值. ...

  4. Java 原始数据类型的计算:运算符重载(Operator Overload)和类型转换(Type Conversion)

    原文阅读:<算法(第四版)>第一章 第一节:基础编程模型 有没有在面试的时候被问到:下面这几行代码的执行结果是什么?依据是什么? System.out.println (5/3); Sys ...

  5. JAVA 1.2(原生数据类型 Primitive Data Type)

    1. Java的数据类型分为2类 >> 原生数据类型(primitive data type) >> 引用数据类型(reference data type) 3. 常量和变量 ...

  6. Java parseInt_使用此方法得到的原始数据类型的一个特定的字符串

    Java parseInt解释加方法示例     使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个         java parseInt ...

  7. Java语言基础(五) Java原始数据类型的分类以及数据范围

    Java原始数据类型的分类以及数据范围 1.基本数据类型分为:整型(byte, short, int, long),浮点型(float, double),字符型(char),布尔型(boolean) ...

  8. Java中原始数据类型存放位置理解

    原始数据类型的变量存放在栈还是堆,应该由上下文去决定. 如下所示的局部方法中,定义了本地变量a,且为原始数据类型,所以存放在栈中. public void func(){ int a = 3; } 再 ...

  9. Java中的原始类型(Primitive Types)与引用类型(Reference Values)

    Java虚拟机可以处理的类型有两种,一种是原始类型(Primitive Types),一种是引用类型(Reference Types). 与之对应,也存在有原始值(Primitive Values)和 ...

  10. JAVA中分为基本数据类型及引用数据类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

随机推荐

  1. 企业SQL笔试

    Student(SID, Sname, Sage, Ssex) 学生表        Course(CID, Cname, TID) 课程表        SC(SID, CID, score) 成绩 ...

  2. mybatis 中javaType和OfType 的区别

    JavaType和ofType都是用来指定对象类型的,但是JavaType是用来指定pojo中属性的类型,而ofType指定的是映射到list集合属性中pojo的类型.pojo类: publiccla ...

  3. C语言学习笔记之位运算求余

    我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效. ...

  4. hnsdfz -- 6.20 -- day5

    今天子贞的题...... 比前两天充实多了……肝了一个线段树,还玩了一个题答…… 虽然线段树不知道为什么50->25,题答题数据太水全场90+... 感觉也没想出来啥思路,无脑肝线段树,无脑玩题 ...

  5. Vue通过路由 query传递参数

    父组件通过query来传递num参数为1,相当与在 url 地址后面拼接参数 <template> <div> <h3>首页</h3> <rout ...

  6. pache tomcat慢速HTTP拒绝服务攻击安全问题解决办法

    问题说明:HTTP协议的设计要求服务器在处理之前完全接收到请求.如果HTTP请求未完成,或者传输速率非常低,则服务器将保持其资源占用等待剩余的数据.如果服务器占用的资源太多,则会造成拒绝服务. 漏洞危 ...

  7. 12 个 JS 技巧

    1. 过滤唯一值 ES6 引入了 Set 对象和延展(spread)语法…,我们可以用它们来创建一个只包含唯一值的数组. 复制代码     const array = [1, 1, 2, 3, 5, ...

  8. VS调试快捷键配置更改

    VS进行调试时,默认情况下需按下Fn+F5等组合按键,手短的用起来很不便利 如何去掉组合键只按下F5? 解决:即按下Fn+Esc,然后就可以直接按下F1-F12使用VS的快捷键,如果想回到组合键也是同 ...

  9. 解决spyder、Jupyter Notebook 打不开

    参考: https://blog.csdn.net/lanchunhui/article/details/72891918 https://stackoverflow.com/questions/49 ...

  10. 黄聪:原生js的音频播放器,兼容pc端和移动端(原创)

    更新时间:2018/9/3 下午1:32:54 更新说明:添加音乐的loop设置和ended事件监听 loop为ture的时候不执行ended事件 1 2 3 4 5 6 7 8 9 10 11 12 ...