【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
1、数据类型介绍
| 基本数据类型 | 字节数 | 二进制位数 | 最小值 | 最大值 | 默认值 |
| byte | 1 | 8-bit | -2^7 | +2^7 - 1 | 0 |
| short | 2 | 16-bit | -2^15 | +2^15 - 1 | 0 |
| int | 4 | 32-bit | -2^31 | +2^31 - 1 | 0 |
| long | 8 | 64-bit | -2^63 | +2^63 - 1 | 0 |
| float | 4 | 32-bit | IEEE754 | IEEE754 | 0.0f |
| double | 8 | 64-bit | IEEE754 | IEEE754 | 0.0d |
| char | 2 | 16-bit | \u0000 | \uFFFF | \u0000 |
| boolean | ---- | ---- | ---- | ---- | false |
| void |
- boolean这个类型比较特殊,Javadoc中这样描述:
boolean: The
booleandata type has only two possible values:trueandfalse. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
即:boolean类型只有两个值:true和false。使用这个类型来作为true/false分支的简单标识。这个类型只包含一个bit的信息,但是其所占空间并未精确定义 - void 也被放在了表中,但其实它不属于基本数据类型,准确的说它是伪类型,是一种无返回值类型。具体不必深究。
- 引用类型默认值为null。
- String作为参数传递时和其他引用类型不一样,即只传字符串值而非引用地址。
2、两种数据类型的区别
2.1 含义
class Student {
String ID;
String Name;
int Age;
public Student(String id, String name, int age) {
ID = id;
Name = name;
Age = age;
}
}
int a = 10;
Student b = new Student("070271006", "喵小咪", 18);
上述变量的堆栈对应情况如下图:

2.2 处理
int a = 10;
int b = a + 20;
一般情况下,引用类型在声明的时候,只是创建了一个变量,其具体的空间并没有分配。需要使用关键字new来开辟空间存储数据。
例如:
Student student = null; // 此时只是声明了一个Student变量
// student.toString(); // 这时候使用该变量访问就会出错:该行会报空指针异常
student = new Student("070271006", "喵小咪", 18);// 此时会告知JVM开辟空间存储数据
上述两行代码的空间分配JVM是这样处理的:
- 在栈中创建一个名为student的变量,其变量值为空;
- 在堆中为Student开辟一块空间,并分别为ID、Name、Age三个成员变量设置默认值;
- 根据Student构造方法的定义,为三个成员变量分别赋值:"070271006", "喵小咪", 18
- 把Student对象在堆中的地址赋值给栈中的student变量。
2.3 赋值
int a = 10;
int b = a; // 此时,b的值就是10
// 如果修改a的值,b的值不会发生变化。
a = 100; // 此时a的值是100,b的值还是10
一般情况下,引用类型的赋值传递的是堆内存地址,例如:
Student stuMiao = new Student("070271006", "喵小咪", 18);
Student stuNodin = stuMiao;
上述赋值操作并没有新创建对象,而是在栈中声明了一个名为stuNodin的变量,其变量值和stuMiao这个变量的值相同,都是指向Student这个对象的堆内存的地址。形象的比喻,就像是同一个人的两个名字一样。
stuMiao.Age = 16; // 此时,stuMiao.Age 等于 16;stuNodin.Age 等于 16;
同样地,String作为一种特殊类型,仍然不适用上述规则。详见下篇文章。
3、运算符
| 算数运算符 | +,-,×,/,%取余 ,++,--,- 取反 |
| 关系运算符 | >,<,>=,<=,!=,== |
| 逻辑运算符 | !非, &与,|或,^异或,&& 短路与,|| 短路或 |
| 按位运算符 | ~按位取反, &按位与, |按位或, ^按位异或 |
| 移位运算符 | << 左移 ,>>带符号右移, >>>不带符号右移 |
| 三目条件运算符 | D=表达式1?表达式2 :表达式3 |
| 赋值运算符 | = ,+=,-= |
4、循环
for (元素类型t 元素变量 x : 遍历对象list) {
引用了x的java语句;
}
foreach是一种for的简化版本,主要用于数组和集合的简单遍历操作。但是其也有局限性,其只提供遍历功能,不能进行删除、替换等操作,对于需要记录并使用索引的循环,foreach本身也无法实现(可以自己记录实现)。所以无法替代for循环,但是都可以转换为对应的for循环。
// 实例一,遍历数组:
int[] arrays = new int[] {1, 2, 3};
for (int i : arrays) {
System.out.println(i);
} //实例二,遍历集合:
List<String> list = new ArrayList<String>();
for (String item : list) {
System.out.println(item);
}
【Nodin's Tips】
【重走Android之路】【Java面向对象基础(一)】数据类型与运算符的更多相关文章
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- 【重走Android之路】【番外篇】关于==和equals
[重走Android之路][番外篇]关于==和equals 在实际的编程当中,经常会使用==和equals来判断变量是否相同.但是这两种比较方式也常常让人搞得云里雾里摸不着头脑.下面是我个人做的总 ...
- 【重走Android之路】【路线篇(二)】知识点归纳
[重走Android之路][路线篇(二)]知识点归纳 参考:http://blog.csdn.net/xujing81/article/details/7313507 第一阶段:Java面向对 ...
- 【重走Android之路】【开篇】序
[重走Android之路][开篇] [序] 本人Nodin,偶尔也叫MoNodin,朋友们都喜欢叫我丁,还有个笔名叫陌上幽人,文艺时叫恋风,发奋时叫不肯腐烂的土壤...也许你觉得我 ...
- 【重走Android之路】【番外篇】有关于null的一些知识点
[重走Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...
- 【重走Android之路】【路线篇(一)】路线图
总结归纳了J2SE和Android的知识点,自己制订了一套详细的路线图,其中肯定有考虑不全和不合适的地方,欢迎各位大牛批评指正. 详细路线图如下:
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
随机推荐
- color the python console text
//install termcolor module cd \ cd python27 cd scripts pip install termcolor pip install colorama // ...
- Z_blog博客尝试 http://www.uuxin.com/
原来的博客由于没有备份所有数据全部丢失,很是郁闷. 又用Z-BLOG新建了一个博客.http://www.uuxin.com
- 11.5Daily Scrum
人员 任务分配完成情况 明天任务分配 王皓南 实现网页上视频浏览的功能.研究相关的代码和功能.811 数据库测试 申开亮 实现网页上视频浏览的功能.研究相关的代码和功能.812 实现视频浏览的功能 王 ...
- Careercup - Microsoft面试题 - 5718181884723200
2014-05-11 05:55 题目链接 原题: difference between thread and process. 题目:请描述进程和线程的区别. 解法:操作系统理论题.标准答案在恐龙书 ...
- C++ 排序函数 sort(),qsort()的含义与用法 ,字符串string 的逆序排序等
上学时我们很多学了很多种排序算法,不过在c++stl中也封装了sort等函数,头文件是#include <algorithm> 函数名 功能描述 sort 对给定区间所有元素进行排序 st ...
- Silverlight编程模型
Silverlight支持Javascript API编程模型和托管API编程模型这两种编程模型,它们的基本作用都是用于XAML界面文件中的XAML对象,基于托管API编程的XAML应用程序是通过x: ...
- FullPage.js全屏滚动插件学习总结
如今我们经常能见到全屏网站,尤其是国外网站.这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容,显得格外的高端大气上档次.比如 iPhone 5C 的介绍页面(查看),QQ浏览器的官网站.如果 ...
- 将Asp.Net页面输出到EXCEL里去
其实,利用ASP.NET输出指定内容的WORD.EXCEL.TXT.HTM等类型的文档很容易的.主要分为三步来完成. 一.定义文档类型.字符编码 Response.Clear(); Respons ...
- 通过HTML条件注释判断IE版本的HTML语句详解<!--[if IE]> <![endif]-->
我们常常会在网页的HTML里面看到形如[if lte IE 9]……[endif]的代码,表示的是限定某些浏览器版本才能执行的语句,那么这些判断语句的规则是什么呢?请看下文: <!--[if ! ...
- 还原TexturePacker plist 文件以及图片的方法 (切开各小图片)
原地址:http://blog.csdn.net/linuxchen/article/details/16865645 Python 脚本:(来自网络) unpack_plist.py 命令行: py ...