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)——对象的思考的更多相关文章

  1. Java探索之旅(6)——对象和类

    1.知识要点 假设: public ClassName{     int data;   String name;     ClassName(){data=1;}     public static ...

  2. Java探索之旅(18)——多线程(2)

    1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存 ...

  3. Java探索之旅(17)——多线程(1)

    1.多线程  1.1线程 线程是程序运行的基本执行单元.指的是一段相对独立的代码,执行指定的计算或操作.多操作系统执行一个程序时会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被 ...

  4. Java探索之旅(16)——异常处理

    1.异常与异常处理 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来 ...

  5. Java探索之旅(15)——包装类和字符类

    1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...

  6. Java探索之旅(14)——文本I/O与读写

    1文件类File    ❶封装文件或路径的属性.不包括创建和读写文件操作.File实例并不会实际创建文件.不论文件存在与否,可以创建任意文件名的实例.两种实例创建方式如下:               ...

  7. Java探索之旅(12)——equals方法及其覆盖

    1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...

  8. Java探索之旅(11)——抽象类与接口

    1.Java数据类型       ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括:         Primitive变量:boolean,byte, char, doubl ...

  9. Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder

    1.数组线性表ArrayList 数组一旦定义则不可改变大小.ArrayList可以不限定个数的存储对象.添加,插入,删除,查找比较数组更加容易.可以直接使用引用类型变量名输出,相当于toString ...

随机推荐

  1. log4j2.xml的例子

    项目中用到的一个log4j2.xml的配置文件: <?xml version="1.0" encoding="UTF-8"?> <!--设置l ...

  2. 图片oom问题

    1.什么是OOM? 程序申请内存过大,虚拟机无法满足我们,然后自杀了.这个现象通常出现在大图片的APP开发,或者需要用到很多图片的时候.通俗来讲就是我们的APP需要申请一块内存来存放图片的时候,系统认 ...

  3. rails 字符串 转化为 html

    simple_format http://apidock.com/rails/v4.0.2/ActionView/Helpers/TextHelper/simple_format http://api ...

  4. 视图的创建与使用 Sql Server View

    创建教材的三个数据表Student.Course及SC. create database S_T Use S_T CREATE TABLE Student (Sno CHAR(9), Sname CH ...

  5. c# 文件IO操作 StreamReader StreamWriter Split 使用

    StreamWriter(String,Boolean) 若要追加数据到该文件中,则为 true:若要覆盖该文件,则为 false. 如果指定的文件不存在,该参数无效,且构造函数将创建一个新文件. 例 ...

  6. Data Structure Binary Tree: Construct Full Binary Tree from given preorder and postorder traversals

    http://www.geeksforgeeks.org/full-and-complete-binary-tree-from-given-preorder-and-postorder-travers ...

  7. 《程序员代码面试指南》第三章 二叉树问题 二叉树按层打印和ZigZag打印

    题目 二叉树按层打印和ZigZag打印 java代码 package com.lizhouwei.chapter3; import java.util.LinkedList; import java. ...

  8. leetcode 900. RLE Iterator

    Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...

  9. Vue mixins extends extend components

    mixins 调用方式: mixins: [mixin1, mixin2] 是对父组件的扩充,包括methods.components.directive等... 触发钩子函数时,先调用mixins的 ...

  10. Spring Cloud之Hystrix服务保护框架

    服务保护利器 微服务高可用技术 大型复杂的分布式系统中,高可用相关的技术架构非常重要. 高可用架构非常重要的一个环节,就是如何将分布式系统中的各个服务打造成高可用的服务,从而足以应对分布式系统环境中的 ...