`
狂奔蜗牛
  • 浏览: 19332 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Think in Java 2 理解笔记 第二章 万事万物皆对象

    博客分类:
  • J2SE
阅读更多
欢迎各位兄弟有不同的见解!多多提出。让小弟得以理解!

Reference 是操控对象之钥匙
Reference(引用、参照、指引) 学了点C,我就把他当着指针,存在Stack(栈) 中地址,指向在Heap(堆)中的起启地址,还包括一些就不知道了。
在传递的时候:是传送引用的复制,不是对象。所以传过去的引用还是指像原来那个对象。一般说的传值也就是传送,值的复制。
String s; 引用 = null;   String = "a"; 引用 = a 在Heap中的地址

所有对象都必须由你建立
String s = new String("asdf");这行代码产生多少个对象呢?呵呵,网站很有争议。有人能证明吗?1个2个还是3个?附:http://develop.csai.cn/java/200608221456051309.htm
感觉还有道理好像是说一个,大部分人说2个对象。
它们都存储在哪里?
1.寄存器(Registers)
速度最快的存储场所,位于CPU内你说能不快吗?至于存什么东西。编译器自身分配使用。
2.Stack(栈)
位于RAM中,速度仅次于寄存器。它于编译器产生stack指针移动和操作的。通常是保存方法(函数)中的参数,局部变量.对象引用。一般存数据都有大小和存活时间的限制。
3.Heap(堆)
存在RAM中,数据产生基本是用new进去的。弹性比stack好。可以动态给对象分配空间。但耗费的时间多了很多。
4.静态存储空间(Static storage)
存在RAM中,static修饰的数据都存在这里
5.常量存储空间
存在ROM,只读的所以是安全的。C#中的静态常量,和动态常量public static readonly runtimeConstant = 1;这个就是很清楚了
6.Non-RAM 存储空间
存在于程序之外,如果streamed objects(串流化对象)和persistent objects(持久化对象)
串流化对象就不就是以二进制的流行式。持久化对象就是可以存在其它介质上。java--轻量级持久性(待解)

特例:基本型别(primitive types)
基本类别(non-ojbect):boolean btye chart long int double float void
包装类别(对基本类别相应的包装对象):Boolean Btye Character Long Integer Double Float  Void
还有两个高精度数值类:
BigInteger 有大数存多大数,BigDecimal 对应高精度浮点数(有了这两个类型,你有多少钱都不怕。丢失了和存不下了)
基本型类大不小和硬件架构而改变!高度可携性牛!
不过在程序中还是得知道他们的大不,这里略,因为越界他会给你乱码的!
Java中的数组(array)
JAVA保证数据一定初始化,多开一点空间用来对数组进行检查。

你再也不需要摧毁对象
GC有java回收机制(这是一个神奇的东西,哈哈)

生存空间
java是一种自由格式(free-form)的语言,不论空白,跳格,换行,不会影响程序
除对对象外生存空间一般生存在外面一对{}之内--从定义当条到}结束,但要注意C/C++ 与 JAVA有区别下面JAVA是不允许的:
{
int x = 100;
 {
   int x = 200;
 }
}


对象的生存空间
{String s = new String("abc")}
只要new出来就存生了但过了}new出的引用将会消失。最后回收还是GC

建立新的数据型别:class
对象的外观就是class MyClass{/*程序体*/}

数据成员(field) 和 函数(methods)
类,除了成员,就是函数(我喜欢说方法)
基本成员缺省0 但有两个特殊的 boolean = false ,char='\u0000'(null)
对象 为null
{int x } 如果在方法体中 JAVA会语法检查中报错。强制要你赋初值 对象也一样

方法(Methods),引数(arguments),返回值(return values)
最基本形式:
返回值 方法名称(引数列表...) {
  方法体

调用方法 对象.方法名称

引数列(The argument list)
void setString(String s){
  return;
}
上面return;表示可以跳出方法体。String 传送的是s对象。传送是s的引用。
参数传递机制
call-by-value 值调用:将实际参数的内容拷贝到被调用方法
call-by-reference 引用调用:将实际参数的地址作为形式参数的值被传递到被调用方法
名调用:早期程序设计语言Algol 60使用。
值调用:
虽然Java使用值调用,但只要我们把一个对象的名字传递给一个被调用过程,那个过程受到的值实际上是这个对象的指针。因此,被调用过程是可以改变这个对象本身的值的。
引用调用:
Java语言解决数组、字符串、和其他对象的参数传递问题的方法是仅仅复制这些对象的引用。结果是,Java运行时就好像它对所有不是基本类型(比如整数、实数等)的参数都使用了引用调用。

名称的可视性(Name visibility)
"名称管理"(我们说的“包”)C++/C#用“命名空间”
程序怎么命名呢。像我的域名 snail-java.iteye.com
包名就可以com.javaeye.snailjava 就这样。

使用其他组件(component)
引用其它组件包用关键字import
import java.util.ArrayList; 表求引用ArrayList类
import java.lang.*; lang 是默认导入包,不需要程序员显示导入。.*表示所有 lang.* 表示lang包下所有的类。所以.*导入比较方便,但影响编译时间,不建议。

关键字static
被关键字修饰过的数据被存在静态存储空间(Static storage),只有一份。它不是所属对象,而是所有class都共享,如果程序中出现成篇成篇使用static你就要想想你的oop问题了。static有时感觉很不安全。有些特定功能总能派上用场。特别是一些效率问题。

第一个Java程序
好累呀!终于开始写代码了。写个超经典的HelloWorld吧!文件名:HolleWorldOne
//public class HolleWorldOne
 class HolleWorldOne {
	public void method1() {
		System.out.println("method one");
	}
	public static void main(String[] args) {
		System.out.println("HolleWorld one!");
	}
}
class HolleWorldTwo{
	 public static void main(String[] args) {
			System.out.println("HolleWorld two!");
	 }
}

public :公共修饰词,修饰class一个件只能有一个public,对其它同包文件可见。而且修饰的class Name必须和文件字一致。上面代码如果要修饰class就只能是HolleWorldOne,编辑HolleWorldOne,编辑器将HolleWorldTwo会连同一起编辑!
main(String[] args) :main方法是程序的入口,程序程序也人将运行一个main,String[] args 是从控制台输入的String数据。
static:这里是必需的,main 是属整个程序,而且运行过程只也只有一份。虽然编辑得过,一运行:Exception in thread "main" java.lang.NoSuchMethodError: main

编译与执行
在编译前请安全Java 的JDK,在设置好JDK的path
面试中经常会问到path 和 classpath的区别
path:是操作系统寻找JDK的路径,操作系统平台找程序的路径。
classpath:JAVA也可以说一个运行平台,是它找.class文件的路径。
编译:进入cmd,转到java文件当前目录 or 当前磁盘
javac [path]MyClaa.java
运行: java[path] MyClass

注解及内嵌式文档
一位美女再好看也得穿衣服包装一下,注解就是那件衣服了。支持有自己的个性。
附:http://tmsoft.lsxy.com/index.php?id=476&load=read
这件衣服不错,款式大众化!好的代码习惯从注解开始。
文档的一些常用标签:
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
文档的制作:
cmd -- javadoc [path]MyClass.java
其上// /*  */ 这样的注解是不能显示到doc文档中的。
/** */文档注解。

编码风格(Coding style)
JAVA但只有几种,不过有些公司有特定的风格。没有就看喜好办。
类名:英文单词首字母大写;
方法名:第一个单词用动词,驼峰命名法(首单词,首字母小写,其它首字母大写!)
变量:驼峰命名法
包名:全小写(jdk早版本是本大写)
{}这东东看喜好了。
style()
{
  C/C++风格,感觉层次清晰

style() {
  JAVA风格,代码又少了一行,是不是感觉更专业一点呢。
}

PS:-.-这是我写的第二篇文章了,虽然看的兄弟们也很多,从来没人评论一句。是我写得太好 or 太差了? 自己当然知道是大家看了这种垃圾东东都不想浪费手指几下力气!!!渴望大家的指点和支持!。那怕您是说我的HelloWorld 写成 HolleWorld!
2
0
分享到:
评论
2 楼 Vikiyung 2010-08-03  
只要new出来就存生了但过了,这里打错了字,猜不出写的啥,看到了就给改下吧。
1 楼 Vikiyung 2010-08-03  
错误:“而且修饰的class Name必须和文件字一致”,这里不一样也同样可以输出的,不信你试试看,比如主类名为HelloWorld,文件名为hello.java。然后在dos里面输入javac hello.java ,再输入java HelloWorld。同样能正确输出。这里我也不清楚是什么原因,还请某位达人给个解释。

相关推荐

    think in java 第11章 持有对象

    以上就是《Think in Java》第11章“持有对象”中的核心知识点,理解并掌握这些概念对于深入理解和使用Java对象是非常重要的。通过实践和编程练习,你可以更好地领悟这些知识,并应用到实际项目中。

    Think In Java 学习笔记

    《Think In Java 学习笔记》 在Java编程语言中,对象是核心概念,它们代表着程序中的实体和行为。对象具有状态、行为和标识,是现实世界概念在软件中的映射。对象的状态由其内部的属性(或称数据成员)表示,行为则...

    Think in java学习笔记

    ### Think in Java 学习笔记知识点总结 #### 第1章:对象导论 - **一切皆为对象**:Java 中的几乎所有事物都是对象,对象通过发送消息的方式进行交互。 - **对象模型**:每个对象都有自己的存储空间,该空间由其他...

    Think in java第三版代码

    7. `frogbean`、`c12`、`c02`、`c04`:这些可能是目录或文件,可能分别对应《Think in Java》中的特定章节或案例,例如`frogbean`可能与青蛙类(Frog)相关,而`c02`、`c04`可能代表第2章和第4章的代码。 通过研究...

    Think in java 中文第四版第二部分 (非扫描,瑕疵版)

    总的来说,《Think in Java 中文第四版》的第二部分将带你深入到Java的世界,通过丰富的示例和深入的解释,让你对Java编程有更全面、更深入的理解。配合提供的源代码,你可以亲自实践书中讲解的概念,加深理解,提升...

    Think in java读书笔记

    《Think in Java》读书笔记深度解析 一、构建器(Constructor) 构建器是Java中用于初始化新对象的一种特殊方法,其显著特征是没有返回值类型,包括`void`。这一点与普通方法形成鲜明对比,普通方法即便没有实际...

    think in java source code

    《Think in Java》是Bruce Eckel的经典编程教材,它深入浅出地讲解了Java语言的基础概念和高级特性。源码整理则为读者提供了实践和学习的机会,帮助理解书中的示例和理论。以下是对《Think in Java》源码中一些重要...

    Think in Java3

    通过对《Think in Java 3》的学习,读者不仅可以掌握Java语言的基础知识,还能深入理解面向对象编程的思想,提升编程技能和解决问题的能力。这本书适合所有层次的Java开发者,无论你是初学者还是经验丰富的程序员,...

    王者归来之Thinking in java读书笔记

    《王者归来之Thinking in Java读书笔记》是对Bruce Eckel的经典之作《Thinking in Java》第四版的深度学习与总结。这本书是Java程序员的必备参考书,它深入浅出地阐述了Java语言的核心概念和技术,旨在帮助读者理解...

    think in java 练习

    《Think in Java》是 Bruce Eckel 的经典著作,它深入浅出地讲解了Java编程语言的核心概念和技术。这本书强调理解编程思想,而不仅仅是学习语法。练习题是学习过程中的重要部分,它们帮助我们巩固理论知识,提升实际...

    think in java 英文第四版 高清完整PDF版

    java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一

    think in java第四版练习题第三章答案

    在《Think in Java》第四版的第三章练习题中,你可能会遇到关于构造函数、方法重载、抽象类与接口、访问控制、异常处理等方面的问题。解决这些问题需要对Java的基础语法有深刻的理解,并能够灵活运用。这些练习将...

    Think in JAVA 编程思想 第四版 清晰扫描版

    第四版作为该书的最新版本,包含了作者对Java语言深入的理解和丰富的编程经验,旨在帮助读者理解面向对象编程的核心理念,并提升编程技能。下面我们将深入探讨这本书中的主要知识点。 1. **面向对象编程基础**:书...

    Think in java 源码构建编译

    Think in java 源码构建编译

    Think In Java 4(完美高清中文版).

    《Think In Java 4》是Java编程领域里一本极具影响力的著作,由资深程序员 Bruce Eckel 编著。这本书以其深入浅出的讲解方式和全面的知识覆盖而闻名,被誉为Java学习者的经典读物。中文版的完美高清版本为国内读者...

    think-in-java

    《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,中文版的出现使得更多中国程序员能够深入理解和掌握Java编程语言的核心概念。这本书以其深入浅出的讲解方式,深受程序员们的喜爱,是许多初学者...

    think in java4源代码

    《Think in Java 4》是Java编程领域的一部经典之作,由Bruce Eckel撰写,它以其深入浅出的讲解方式和丰富的示例代码深受程序员喜爱。这个压缩包包含的就是这本书的全部源代码,旨在帮助读者更好地理解和实践书中所...

    Think Data Structures in Java azw3

    Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    think in java 4 源码 eclipse工程版

    think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse

Global site tag (gtag.js) - Google Analytics