Java 学习笔记 ------第四章 认识对象
本章学习目标:
- 区分基本类型与类类型
- 了解对象与参考的关系
- 从打包器认识对象
- 以对象观点看待数组
- 认识字符串的特性
一、“=” 和 “==”
当=用于基本类型时,是将值复制给变量,当==用于基本类型时,是比较两个变量储存的值是否相同,如下面的程序:
int a = 10;
int b = 10;
int c = a;
System.out.println(a == b); //显示true
System.out.println(a == c); //显示true
如果你在操作对象,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一对象。
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.1");
BigDecimal c = a;
System.out.println(a == b); //显示false
System.out.println(a == c); //显示true
System.out.println(a.equals(b)); //显示true
从内存的角度来说,值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是两个对象的地址,而equals比较的是两个对象的内容。
二、基本类型打包器
Java中有两个类型系统,即基本类型与类类型,使用基本类型目的在于效率,然而更多时候,会使用类建立实例,因为对象本身可以携带更多信息,如果要让基本类型像对象一样操作,可以使用Long、Integer、Double、Float、Boolean、Byte等类来打包(Wrap)基本类型。
public class IntegerDemo {
public static void main(String[] args) {
int data1 = 10;
int data2 = 10;
Integer wrapper1 = new Integer(data1); //打包基本类型
Integer wrapper2 = new Integer(data2);
System.out.println(data1 / 3); //基本类型运算
System.out.println(wrapper1.doubleValue() / 3); //操作打包器方法
System.out.println(wrapper1.compareTo(wrapper2));
}
}
output:
3
3.3333333333333335
0
除了使用new创建基本类型打包器之外,从J2SE 5.0之后提供了自动装箱功能和自动拆箱功能。
//Autoboxing
int i = 10;
Integer wrapper = i;
Number number = 3.14f;
//Auto Unboxing
Integer wrapper = 10;
int foo = wrapper;
三、数组
数组在Java中就是对象。
数组的两种遍历方式:
1.使用for循环,通过使用length属性获取数组长度
int[] scores = { 88, 81, 74, 68, 78 };
for (int i = 0; i < scores.length; i++) {
System.out.printf("学生分数:%d %n",scores[i]);
}
2.使用增强式for循环
for(int score:scores){
System.out.printf("学生分数:%d %n",score);
}
数组的创建:
int[] intArray; //creating array without initializing or specifying size
int intArray1[]; //another int[] reference variable can hold reference of an integer array
int[] intArray2 = new int[10]; //creating array by specifying size
int[] intArray3 = new int[]{1,2,3,4}; //creating and initializing array in same line.
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
- 给数组赋值:通过fill方法。
- 对数组排序:通过sort方法,按升序。
- 比较数组:通过equals方法比较数组中元素值是否相等。
- 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
java.lang.System类提供了实用方法拷贝元素到另一个数组。在拷贝内容从一个数组到另一个数组的时候System.arrayCopy非常强大和灵活。你可以拷贝整个或子数组,具体看你的需求。
public static void main(String args[]) {
int[] source = new int[]{10, 20, 30, 40, 50};
int[] target = new int[5];
System.out.println("Before copying");
for(int i: target){
System.out.println(i);
}
System.arraycopy(source, 0, target, 0, 3);
System.out.println("after copying");
for(int i: target){
System.out.println(i);
}
}
Output:
Before copying
0
0
0
0
0
after copying
10
20
30
0
0
四、字符串
书上的内容已然非常详细,这里附上一篇importnew上的文章(浅谈Java字符串,http://www.importnew.com/16881.html)。
文章内详细讲解了String、StringBuffer和StringBuilder的性质和比较,以及方法和性能分析。
五、查阅API
从这一章开始,Java的学习逐渐走入了类和对象这个范畴,本章学习了大量的类以及部分方法,通过查阅相关API可以获取这些类的其他方法的使用方式,多查阅API非常有助于学习Java。http://www.yq1012.com/api/
Java 学习笔记 ------第四章 认识对象的更多相关文章
- [core java学习笔记][第四章对象与类]
4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); sta ...
- 《Java程序设计》第四章-认识对象
20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...
- [Python学习笔记][第四章Python字符串]
2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...
- Java 学习笔记 ------第三章 基础语法
本章学习目标: 认识类型与变量 学习运算符的基本使用 了解类型转换细节 运用基本流程语法 一.类型(基本类型) 所谓基本类型,就是在使用时,得考虑一下数据用多少内存长度存比较经济,利用程序语法告诉JV ...
- Java学习笔记(四)
字符串 字符串应用主要分为String类操作与字符串生成器 在程序中频繁的进行附加字符串则使用字符串生成器StringBuilder 数组 概述 数组是具有相同数据类型的一组数据的集合 数组创建 先声 ...
- o'Reill的SVG精髓(第二版)学习笔记——第四章
第四章:基本形状 4.1线段 SVG可以使用<line>元素画出一条直线段.使用时只需要指定线段起止点的x和y坐标即可.指定坐标时可以不带单位,此时会使用用户坐标,也可以带上单位,如em. ...
- Java 学习笔记 ------第五章 对象封装
本章学习目标: 了解封装的概念与实现 定义类.构造函数与方法 使用方法重载与不定长度自变量 了解static方法 一.Java封装概念 在面向对象程式设计方法中,封装(英语:Encapsulation ...
- Java学习笔记【四、类、对象、接口】
编程语言的发展 机器语言 过程语言 面向对象编程--封装.继承.多态 关键字 extends implements override overload super this static abstra ...
随机推荐
- CentOS6安装各种大数据软件 第七章:Flume安装与配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- makefile中的一些参数说明
#obj = main.o sub.o add.o div.o mul.osrc = $(wildcard *.c) #搜索.c文件 可以加路径 obj = $(patsubst %.c, %.o, ...
- Spring Bean d的作用域
在spring中,可以在<bean>元素的scop属性里设置bean的作用域,以决定这个bean是单实例的还是多实例的. 默认情况下,spring只为每个在IOC容器里声明的bean创建唯 ...
- JavaScript入门学习(0)相关 软件工具
JavaScript本地脚本编辑工具(1st JavaScript Editor Pro ) 必要设置 https://pan.baidu.com/s/1XoaNA9o0qt2eJfLgoZ5 ...
- 树莓派3B+SimpleCV上连接iPhone4s摄像头
目的:把iPhone4s当成网络摄像头,通过wifi连接到树莓派上,做为树莓派的摄像头. 1. iPhone4s上安装mini WebCam应用. 很旧的一个app, 没有密码,简单,无广告,免费. ...
- IOTutility 一个轻量级的 IOT 基础操作库
IOTutility 一个轻量级的 IOT 基础操作库 Base utility for IOT devices, networking, controls etc... IOTutility 的目的 ...
- Home Assistant系列 -- 自动语音播报天气
在树莓派上要让 Home Assistant 发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机).软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 ...
- Backbone.js Basics: Bringing an App to Life with Events
http://www.sitepoint.com/backbone-basics-events/
- .Net 两个对像之间的映射 ( 二 )
一.使用 class Program { static void Main(string[] args) { User u1 = new User(); u1.UserName = "aaa ...
- 20155328 2016-2017-2 《Java程序设计》第四周学习总结
学号 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 继承:避免多各类间重复定义行为,extends关键字表示继承后再扩充原本没有的行为.如果没有使用exte ...