明辉站/网站教程/内容

Java编程思想读书笔记(1、2、3章)

网站教程2024-01-13 阅读
[摘要]第1、2章 万事万物皆对象   一.所有对象都必须由你建立   1. 存储在哪里   1. 寄存器:我们在程序中无法控制   2. stack:存放基本类型的数据和对象的reference,但对象本身不存放在stack中,而是存放在Heap中   ...
第1、2章 万事万物皆对象

   一.所有对象都必须由你建立

   1. 存储在哪里

   1. 寄存器:我们在程序中无法控制

   2. stack:存放基本类型的数据和对象的reference,但对象本身不存放在stack中,而是存放在Heap中

   3. Heap:存放用new产生的数据

   4. Static storage:存放在对象中用static定义的静态成员

   5. Constant storage:存放常量

   6. NON-RAM:硬盘等永久存储空间

   2. 特例:基本型别

   基本类型数据存放在Stack中,存放的是数据。而产生对象时,只把对象的reference存放在stack中,用于指向某个对象,对象本身存放在Heap中。

   3. Java中的数组

   当你产生某个存储对象的数组时,真正产生的其实是存储reference的数组。引数组建立后,其中的每一个reference都会被自动设为null,表示“不指向任何对象”。

   二.建立新的数据型别:Class

   1. 数据成员和函数

   1.1 基本成员的缺省值

   1) 当class的某个成员属于基本型别时,即使你没有为它提供初值,Java仍保证它有一个缺省值。

   2) 只有当变量身份是“class内的成员时,Java才保证为该变量提供初值。

   三.函数(Mehtods),引数(arguments),返回值(return values)

   1. 引数列

   当引数传递的是对象时,传递的是对象的reference。

   四.注解用内嵌式文档

   Java提供两种注解风格:/*XXXX*/、//XXXX

  第3章 控制程序流程
   一.使用Java运算符

   1.关系运算符

   1.) 当对两个对象运用关系运算符进行比较时,比较的是object reference,如:

   Integer n1 = new Integer(3);
   Integer n2 = new Integer(3);
   System.out.println(n1==n2);
   结果为false,因为两个object reference(n1和n2)值是不同的
   2) quals()的缺省行为也是拿referenct来比较。不过Java中的class覆写了equals方法,如:

   Integer n1 = new Integer(3);
   Integer n2 = new Integer(3);
   System.out.println(n1.quals(n2));//值为true
   2. 逻辑运算符

   1) 只能将and、or、not施用于boolean值身上。如果逻辑运算符两边的值存在non-boolean值,将会出错,如:

   int test1 = 1;
   System.out.println((test && 1<2);>
   3. 位移运算符

   如果所操作的位移对象是char、byte、short,位移动作发生之前,其值会先被晋升为int,运算结果会是int。

   二.流程控制

   1. 迭代(iteration)

   1.1 逗号运算符

   逗号运算符只能用于for循环的控制表达式中的initialization和step两部分中,如:for(int i=0, j=I+1; I<5; i++,="" j="">

   1.2 break和continue

   break表示退出循环;continue表示退出本次循环,回来循环起始位置。

   1.3 label

   label只有放在迭代语句之前才起作用,在label和迭代语句之间插入任何语句都不会起作用。

   2. Switch

   switch中的选择器必须是int或char型,如:

   float i = 2;
   switch ( i )//将出错,因为i不是int或char之一
   3. 计算细节

   1) 从float或double转为整数值,总是以完全舍弃小数的方式进行。

   4. Math.random()的输出范围是[0, 1]。

……

相关阅读