Java探索之旅(7)——对象的思考
1.知识要点
❶不可变类:一旦创建,其内容不能改变的类称之为不可变类。满足:⑴所有数据域私有,⑵没有修改器,⑶没有访问器方法,其返回一个指向可变数据域的引用。(这样通过引用就能修改私有数据域)。比如,返回数组,String等皆可能导致实际数据被改变
❷变量作用域:类的变量和方法可以任意顺序出现,只要方法没有使用某个变量。方法可以定义与类数据变量名称(实例变量和静态变量)相同的局部变量,且使用具有较高的优先级。
❸this引用:指向本身的引用。可以在无参和少参构造函数中使用this调用多参构造函数,便于维护,使用方法this(参数表)。此时this指向类名。Java要求这种使用在任何其他语句之前出现。
❹一个对象可以包括另外一个对象,关系称之为组合。即类的数据域可以定义另外一个类的引用变量。
2.类的设计原则
❶内聚性:描叙单一实体。所有操作应该在逻辑上配合,支持连贯的目标。
❷一致性:命名遵循规则
❸封装性:private隐藏数据域。get和set提供访问器和修改器。
❹清晰性:在不产生混淆的情况下,凭直觉来定义。
❺完整性:供不同的用户使用的齐备功能
❻实例和静态:不依赖于单独对象的变量和方法应该声明静态。实用类名引用静态变量和方法。提供公有的静态修改器,修改静态数据域。实例可以调用静态(实例和方法),但静态不能调用实例(变量和方法)
3.实例-栈
public class StudyObject
{
static int size=10;
public static void main(String args[])
{
Stack mystack = new Stack();
java.util.Random random=new java.util.Random();//随机数
random.setSeed(100);
for(int i=0;i<size;i++)
mystack.push(random.nextInt(56));
mystack.getElements();
System.out.println();
mystack.pop();
mystack.getElements();
} } class Stack
{
private int[] elements;
private int size=0;
public static final int DEFAULT_CAPSITY=4; Stack(){this(DEFAULT_CAPSITY);}//this构造函数 此处和Stack指向相同的引用
Stack(int capcity)
{elements=new int[capcity];} public void push(int e){
if(size>=elements.length)
{
int[] temp=new int[size+1];
System.arraycopy(elements, 0, temp, 0, size);//扩展数组,字符串复制
elements=temp;
}
elements[size++]=e;
} public int pop()
{
int last=elements[--size];
int[] temp=new int[size];
System.arraycopy(elements, 0, temp, 0, size);//删除最后一个元素
elements=temp;
return last;
} public int peek()
{return elements[size-1];} public boolean isEmpty()
{return size==0;} public int getSize()
{return size;} public void getElements()
{
for(int i=0;i<size;i++)
System.out.print(elements[i]+" ");
}
}
Java探索之旅(7)——对象的思考的更多相关文章
- Java探索之旅(6)——对象和类
1.知识要点 假设: public ClassName{ int data; String name; ClassName(){data=1;} public static ...
- Java探索之旅(18)——多线程(2)
1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存 ...
- Java探索之旅(17)——多线程(1)
1.多线程 1.1线程 线程是程序运行的基本执行单元.指的是一段相对独立的代码,执行指定的计算或操作.多操作系统执行一个程序时会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被 ...
- Java探索之旅(16)——异常处理
1.异常与异常处理 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来 ...
- Java探索之旅(15)——包装类和字符类
1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...
- Java探索之旅(14)——文本I/O与读写
1文件类File ❶封装文件或路径的属性.不包括创建和读写文件操作.File实例并不会实际创建文件.不论文件存在与否,可以创建任意文件名的实例.两种实例创建方式如下: ...
- Java探索之旅(12)——equals方法及其覆盖
1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...
- Java探索之旅(11)——抽象类与接口
1.Java数据类型 ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括: Primitive变量:boolean,byte, char, doubl ...
- Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder
1.数组线性表ArrayList 数组一旦定义则不可改变大小.ArrayList可以不限定个数的存储对象.添加,插入,删除,查找比较数组更加容易.可以直接使用引用类型变量名输出,相当于toString ...
随机推荐
- C#使用SQL语句时候的万用密码问题
实际上万用密码就是因为SQL里面的语句--是注释,利用bug添加用户名和密码. 例如,用户名为 adada’ or 1=1-- 第一个种写法登录成功了 第二种写法登录失败(正确) 第三种写法登录失败( ...
- Oracle数据库体系结构(6)数据库归档重做日志文件管理
归档重做日志文件的概念和选择 Oracle数据库能够把已经写满了的重做日志文件保存到一个或多个指定的离线位置,这种保存的文件为归档重做日志文件.通常情况下一个归档重做日志时一个被LGWR写满的重做日志 ...
- P2487 [SDOI2011]拦截导弹
题目 P2487 [SDOI2011]拦截导弹 做\(SDOI\)有种想评黑的感觉,果然还是太弱了 做法 独立写(调)代码三个小时祭 简化题目:求二维最长不上升子序列及每个点出现在最长不上升子序列概率 ...
- hbase shell-namespace(命名空间指令)
hbase shell命名空间namespace篇: 1. alter_namespace (一般用于添加删除一个属性,很少使用) hbase(main)::> help 'alter_name ...
- echo 命令参数
echo 命令参数: -n 不换行输出 -e 解析转义字符(\n \t \b \r)
- Servlet的过滤器(Fliter)
Servlet过滤器与Servlet十分相似,但具有拦截客户端(浏览器)请求的功能,可以改变请求中的内容来满足实际开发的需求.对于开发人员而言,过滤器实质就是在Web应用服务器上的一个Web应用组件, ...
- Python基础-多线程与多进程
一,线程与进程之间的关系:(从知乎上看到的) 一个必须知道的事实:执行一段程序代码,实现一个功能的过程介绍 ,当得到CPU的时候,相关的资源必须也已经就位,就是显卡啊,GPS啊什么的必须就位,然后CP ...
- SpringBoot_05_热部署和debug
一.pom.xml配置 增加以下pom.xml配置 <!--1.spring-boot插件--> <plugin> <groupId>org.springframe ...
- java支付宝开发-异常-01-"sub_code":"isv.invalid-app-id","sub_msg":"无效的AppID参数"
一.现象 无论请求哪个接口都报这个错误 二.异常原因 后来检查了一下,发现是因为 我支付宝网关写错了.沙箱环境和正式环境 的支付宝网关不同,如下 //支付宝网关名-正式环境 //public stat ...
- 【leetcode刷题笔记】ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...