CoreJava学习笔记1-基本概念、对象和类

一、    java的基本程序设计结构

(一)   java共有8种基本类型:4种整型,2种浮点类型,1种char,1种boolean。

1)       4种整型:byte(1)、short(2)、int(4)、long(8)。

2)       int最常用,byte和short常用在底层的文件处理或者需要控制占用存储空间量的大数组。

3)       浮点类型:float(4)、double(8)。Float后缀F,不加后缀默认为double(D)。

4)       char类型表示单个字符,通常用来表示字符常量。

5)       boolean类型有两个值:false、true。

(二)   声明一个变量之后,必须用赋值语句对变量进行显式初始化,千万不要使用未初始化的变量。

(三)   关键词final表示该变量只能被赋值一次。一旦赋值,不可更改。在Java中,经常用final来定义类常量,这样,可以使该常量在一个类中的多个方法中使用。

(四)   正数被0除将会产生异常,浮点数被0除将会得到无穷大或NaN。

(五)   字符串的不可变性有一个优点:可以让字符串共享。

(六)   检测字符串是否相等使用equals而不用==。后者要求两个字符串的存放地址必须也相同。

(七)   输入输出例子:

(八)   While循环语句首先检测循环条件,因此循环体中的代码可能不被执行。如果希望循环体至少执行一次,则应该将检测条件放在最后,使用do..while.

(九)   case标签可以是:类型为char、byte、short、int的常量表达式;枚举常量;

1)       从Java7开始,case可以支持字符串字面量。

2)       如果case分支语句的末尾没有break,那么会接着执行下一个分支语句。

(十)   中断控制流程语句:break、continue。

(十一)        数组

1)       创建一个数组时,所有元素初始化为0;

2)       boolean数组元素初始化为false。

3)       对象数组元素初始化为null(表示这些元素未存放任何对象)。

4)       Arrays.sort()可以对数组进行快速排序。

二、    对象与类

(一)   类之间最常见的关系:

1)       依赖(uses-a):A类的方法操纵B类的对象(B类的对象是A类的方法的入参),则A类依赖B类。

2)       聚合(has-a):A类的对象包含B类的对象(B对象是A的成员变量)。

3)       继承(is-a):A继承自B,A is a B。

(二)   要想使用对象,就必须首先构造对象,并制定其初始状态。然后对对象应用方法。

1)       使用构造器构造新实例。

(三)   一个对象变量只是引用一个对象,而不是包含一个对象。

1)       如:Date deadline = new Date(); new Date()构造了一个Date类型的对象,该对象的值是一个引用该对象的地址,而这个地址存放在变量deadline中。

2)       如果一个对象为null,就等于没有指向任何对象,就不能调用该对象的任何方法。比如:

Brithday birth = null;

birth.toString();

这样会报错。

(四)   在一个源文件中,只可以有一个公共类,可以有多个非公共类。

1)       比如,EmployeeTest.java除了一个公共类EmployeeTest(包含main方法)之外,还有一个非公共类Employee。

2)       当编译这段源代码时,编译器会在目录下创建两个类文件:EmployeeTest.class和Employee.class。

3)       然后将程序中包含main方法的类名(EmployeeTest)提供给字节码解释器,以便启动该程序:java EmployeeTest

(五)   关于构造器

1)       构造器与类同名。

2)       每个类可以有一个以上的构造器。

3)       构造器可以有多个参数。

4)       构造器没有返回值。

5)       构造器总是伴随着new操作一起调用。

(六)   在每一个方法中,关键词this表示隐式参数,表示当前对象实例。比如:

public void raiseSalary(double percent){

double raise = this.salary +percent;

this.salary +=raise;

}

而percent就是显式参数。

(七)   如果一个类有final实例变量,那么初始化该类时必须初始化该变量。即:必须确保在每一个构造器执行之后,该变量的值被设置,并且在后续操作中不能够对它再修改。

(八)   final修饰符大都应用于基本类型变量或者不可变类型的变量(如果类中的每一个方法都不会改变其对象,这种类就是不可变的类。例如String类。)

(九)   静态变量属于类,不属于任何对象。比如:

每一个Test对象拥有自己的size变量,但是无论新建多少对象,它们共享age变量。

(十)   System.out就是一个使用静态变量的例子。

(十一)        按值调用表示方法提供的是调用者提供的值。按引用调用表示方法接收的是调用者提供的变量地址。Java总是采用按值调用。

1)       很多人根据下面的例子得出结论:Java对对象的传递采用按地址调用,因为调用函数后,对象的属性值发生了变化:

实际上,49行的方法的引用x只是harry的一个拷贝,此时,x和harry都是一个数值,该数值都等于Employee对象指向的地址。即:x和harry同时指向Employee对象的地址。你改变了对象的属性,但x、harry各自代表的那个地址数值并没有发生改变。

2)       通过下例来说明Java对对象采用的也是按值传递:

swap方法对x、y进行置换,导致x和y引用的地址发生了变化。但是a、b没有发生任何变化。

(十二)        如果多个方法有相同的名字、不同的参数,便发生了重载。

1)       要完整的描述一个方法,需要指出方法名以及参数类型。这叫做方法的签名。

2)       返回值类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值得方法。下面的写法错误:

(十三)        如果在编写一个类时没有编写构造器,那么系统就会提供一个无参构造器。这个构造器将所有的实例域(成员变量)设置为默认值。于是,实例域的数值数据设置为0、布尔型数据设置为false、所有对象变量设置为null。(仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。)

(十四)        关键词this的双重意义:

1)       首先,this引用方法的隐式参数(即,一个函数除了多个入参外,还有一个没有写出的this参数,该参数总是指向当前调用该方法的对象实例。)

2)       第二个,如果构造器的第一个语句形如:this(…),这个构造器将调用同一个类的另一个构造器。

时间: 2024-10-15 08:26:07

CoreJava学习笔记1-基本概念、对象和类的相关文章

cocos2dx游戏开发学习笔记1-基本概念

这里主要讲构建整个游戏需要的基本元素,很大部分都摘自cocos2dx官网. 1.Director 导演 导演,顾名思义,就是对整个游戏进行整体控制的. "Director"是一个共享的(单元素集)对象,负责不同场景之间的控制.导演知道当前哪个场景处于活动状态,允许你改变场景,或替换当前的场景,或推出一个新场景.当你往场景堆中推出一个新场景时,"Director"会暂停当前场景,但会记住这个场景.之后场景堆中最顶层的场景跳离时,该场景又会继续活跃.此外"Di

JS学习笔记-OO疑问之对象创建

问一.引入工厂,解决重复代码 前面已经提到,JS中创建对象的方法,不难发现,基本的创建方法中,创建一个对象还算简单,如果创建多个类似的对象的话就会产生大量重复的代码. 解决:工厂模式方法(添加一个专门创建对象的方法,传入参数避免重复) function createObject(name,age){ var obj =new Object(); //创建对象 obj.name = name; obj.age = age; obj.run = function(){ return this.nam

jQuery源码学习笔记:构造jQuery对象

3.1源码结构: (function( window, undefined ) { var jQuery = (function() { // 构建jQuery对象 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } // jQuery对象原型 jQuery.fn = jQuery.prototype = { constructor:

Cocos2D学习笔记(1)- 常用的类

1.坐标系 >屏幕坐标系(UIKit):原点在左上角! >OpenGl坐标系:原点在屏幕的左下角! 2.游戏设计:Director--Scene--Layer--Sprite. >CCDirector:导演类,相当于是游戏策划,负责整个游戏的布局和运行规则的制定. >CCScene:场景类,每个场景可以是一个界面或一个关卡. >CCLayer:图层类,为了方便游戏界面的渲染管理. >CCSprite:精灵类, 小结:一个导演类(CCDirector)可以指挥多个场景类(

C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类

特殊工具与技术 --嵌套类 可以在另一个类内部(与后面所讲述的局部类不同,嵌套类是在类内部)定义一个类,这样的类是嵌套类,也称为嵌套类型.嵌套类最常用于定义执行类. 嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的.嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员. 嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见.嵌套类的名字将不会与另一作用域中声明的名字冲突 嵌套类可以具有与非嵌套类相同

c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)

现在来测试一下在多重继承,虚继承,MI继承中虚继承中构造函数的调用情况. 先来测试一些普通的多重继承.其实这个是显而易见的. 测试代码: //测试多重继承中派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; }

C++ Primer 学习笔记_66_面向对象编程 --定义基类和派生类[续]

算法旨在用尽可能简单的思路解决问题,理解算法也应该是一个越看越简单的过程,当你看到算法里的一串概念,或者一大坨代码,第一感觉是复杂,此时不妨从例子入手,通过一个简单的例子,并编程实现,这个过程其实就可以理解清楚算法里的最重要的思想,之后扩展,对算法的引理或者更复杂的情况,对算法进行改进.最后,再考虑时间和空间复杂度的问题. 了解这个算法是源于在Network Alignment问题中,图论算法用得比较多,而对于alignment,特别是pairwise alignment, 又经常遇到maxim

非专业码农 JAVA学习笔记 3 抽象、封装和类(2)

(2).静态域-放在内存公共存储单元,不放在特定的对象,用static修饰 (续上一篇<非专业码农 JAVA学习笔记 3 抽象.封装和类(1)>...) (3).静态初始器-由static引导的一对大括号括起来的语句组,作用跟构造函数相似 (4).最终域-final引导的,值在整个过程都不发生改变的 5.方法 (1)方法的定义:修饰词1 修饰词2…返回值类型 方法名(参数) throw[异常列表] 这里个人经验就是注意定义了返回值的方法,要在方法体里面增加return 该类型变量:此外遇到if

[ExtJS学习笔记]第六节 Extjs的类系统Class System命名规则及定义和调试

本文地址: http://blog.csdn.net/sushengmiyan/article/details/38479079 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站:    http: