`
liyanhui
  • 浏览: 350665 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编程思想学习笔记3(初始化和清理)

    博客分类:
  • java
阅读更多
初始化和清理
“不安全”的编成,其安全问题包括:初始化和清理
一:初始化
1用构造函数来确保初始化。
2方法的重载
    名字管理是编程语言底一项重要特性。创建对象的时候,你会给内存空间起名字,
  而方法是动作的名字。
    可以用参数个数和类型来区分重载的方法。但是不能用返回值来区分。
3构造函数
   默认大构造函数是“无参数”的构造函数,但如果你写了一个没有构造函数的类
  那么编译器会自动为你创建一个末人大构造函数。但是,只要定义了构造函数(无论有无参数),编译器就不会再自动创建默认的构造函数。
   在构造函数里调用构造函数,需要注意两点:
      A;在一个构造函数里可以用this调用另一个构造函数,但是不能调用两个
      B:记得在程序的最前面调用构造函数
   否则编译器会报错
  4:static
     你可以不通过对象,直接对类调用static方法,(本义)。它和c里的全局函数一样,然而java不允许有全局函数,类的static方法只能访问其他static发放和static数据成员。
二: 清理:finalization和垃圾回收
假设对象所占据的是一些特殊的,不是用new分配的内存,垃圾回收器只知道该如何释放用new分配的内存,所以它就不知道该如何释放这些“特殊的”内存。所以java提供了一个叫finalize()的方法,你可以自己定义类的这个方法。
1所谓的拆构函数就是对象清理的时候必须调用的函数。但是这里一定要搞清楚c++和java的区别。C++的对象总是会得到清理的,而java对象并不总是会被回收的,换言之:
a:对象不一定会被垃圾器回收。
  B; 垃圾回收不是拆构。
2:须记:
    A;垃圾回收只于内存有关。(也就是说,垃圾回收的唯一目的,就上一要将那些不能为程序所用的内存恢复出来)
3:不论对象是以什么方式创建的,内存释放都是由垃圾回收器负责的。
4:finalize()还有一很有趣的用途,这时它就不要求每次都被调用到了,这就是检查对象的中止条件
三:成员的初始化
   1用构造函数进行初始化,但是你要记住,你并没有排除自动的初始化,它在构造函数进行之前就已经完成了。举例:
Public class Counter {
    Int I;
    Counter(){
      I=9;
}
}
I会被先初始化为0,然后才是7
2初始化的顺序
  对类而言,初始化的顺序由变量在类的定义里面的顺序(位置)决定的,但是变量的初始化会优先于任何方法,甚至是构造函数的调用。
3:静态初始化只运行一次。
4:数组的初始化
   举例:
public class Arrays
{
public static void main(String[] args)
{
int a1[]={1,2,3,4,5};
int a2[];
a2=a1;  //a
for(int i=0;i<a2.length;i++){
  a2[i]++;//b
}
for(int i=0;i<a1.length;i++){
  System.out.println("a1["+i+"}=:"+a1[i]);
}
       //预测结果     --- 实际结果
       //a[1]=1;         ---   a[1]=2;
   //a[2]=2;         ---   a[2]=3; 
   //a[3]=3;         ---   a[3]=4;
   //a[4]=4'         ---   a[4]=4'
   //a[5]=5;         ---   a[5]=5; 
}
}; 
说明:第a句:a2=a1 你真正做的是复制reference,使a2的对象和a1的对象一样引用同一块内存;第b句: a[i]++ 其改变的是内存的值,所以a1的值也就变了
java 提供两种不同的类型:引用类型(或者封装类型,Warpper)和原始类型(或内置类型,Primitive)。Int是java的原始数据类型,Integer是java为int提供的封装类
对于原始类型定义的数组,可以这样直接定义,例如:int[] a1 = new int[4];
对于Integer这个引用类型(或一般其他自己定义的类),这样定义数组后
Integer[] a2 =new Integer[5];这只是一个reference的数组,所以只要还没有创建新的Integer对象来初始化这些reference,初始化的过程还没结束,然而,如果你忘了创建对象,那么程序运行的时候,当你要用到数组的空位置的时候,就会得到一个异常。(a1不会发生异常,a2会发生异常。)

分享到:
评论

相关推荐

    《Java编程思想》学习笔记1(操作符、控制语句、对象、初始化与清理).doc

    ### Java编程思想学习笔记知识点详解 #### 一、操作符 **1.1 赋值操作符** - **符号**: `=` - **功能**: 用于将右侧的值赋给左侧的变量。 - **注意**: 当作用于基本类型时,赋值的是具体的值;当作用于对象时,则...

    java编程思想读书笔记

    ### Java编程思想读书笔记知识点概览 #### 第2章 万事万物皆对象 **知识点一:对象存储位置** - **寄存器**:通常由CPU直接控制,Java程序员无法直接访问。 - **栈 (Stack)**:主要存放基本类型的数据和对象的...

    Java编程思想笔记(全)

    ### Java编程思想笔记知识点概述 #### 第 1 章 对象导论 在这一章节中,主要介绍...以上内容概括了《Java编程思想笔记》中的核心知识点,涵盖了Java语言的基础到高级特性,适合初学者和有一定经验的开发者参考学习。

    java私塾学习笔记整理

    ### Java私塾学习笔记整理 #### 第一章:Java入门 ...以上内容涵盖了Java基础知识的重要方面,从语言基础到高级特性,以及常见的开发技术和工具,帮助读者全面了解Java编程的基础知识和技术要点。

    java学习笔记基于法练习

    一、Java编程思想 1. 面向对象编程(OOP):Java的核心是面向对象,这意味着它以类和对象的形式组织代码。类是具有属性(变量)和行为(方法)的模板,而对象是类的实例。理解类和对象、封装、继承和多态等概念是...

    spring学习笔记

    - **BeanFactory**:是Spring最基础的容器,提供了配置机制和依赖注入的基本功能,如XMLBeanFactory是从XML文件中加载bean的定义并初始化它们。 - **ApplicationContext**:是BeanFactory的扩展,提供了更多高级功能...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    Simpllist:React本机简单笔记应用程序

    在“Simpllist”中,这些方法可能用于初始化数据、更新视图或清理资源。 **Redux或MobX状态管理** 为了在复杂应用中更好地管理全局状态,开发者可能会选择使用Redux或MobX这样的状态管理库。虽然“Simpllist”是一...

Global site tag (gtag.js) - Google Analytics