一、    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(…),这个构造器将调用同一个类的另一个构造器。

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

  1. Java学习笔记(2)--- 对象和类入门,java包,this 和 super区别

    1.对象和类(Object and class): 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 面对对象编程是java非常重要的一部分,作者本身之前学过c ...

  2. [core java学习笔记][第四章对象与类]

    4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); sta ...

  3. java学习笔记(3)——对象与类(日期)

    变量.类型.赋值.运算符等等: https://blog.csdn.net/common77zwq/article/details/81988676 1.概念: 面向对象程序设计OOP.类class. ...

  4. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  5. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  6. C#可扩展编程之MEF学习笔记(三):导出类的方法和属性

    前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的. 还是前面的代码,第二篇中已经提供 ...

  7. es6学习笔记-class之一概念

    前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生 ...

  8. [原创]java WEB学习笔记15:域对象的属性操作(pageContext,request,session,application) 及 请求的重定向和转发

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

随机推荐

  1. flask+html selected 根据后台数据设定默认值

    先给代码 <script> $("#selector_political_status").val('{{ archive.political_status }}'); ...

  2. python简介和入门

    一.什么是python? python是一种面向对象.解释型的计算机语言,它的特点是语法简洁.优雅.简单易学. 二.解释型语言和编译型语言 编译型语言--就是先把写好的程序翻译成计算机语言然后执行,就 ...

  3. 《精通C#》第十三章 对象的生命周期

    在C#中,程序员无法直接在C#中删除一个托管对象,因为C#不提供这个功能,那么类的实例就需要通过CLR调用垃圾回收机制进行清除,回收内存..NET垃圾回收器会压缩空的内存块来实现优化,为了辅助这一功能 ...

  4. Discuz中解决jquery 冲突的方法 绝对简单

    将jquery.js在common.js之前载入,不然jquery的$()函数会覆盖common.js的$()函数: 然后用到jQuery的$()函数的地方都用jQuery()代替. 例如 $(doc ...

  5. 挂载windows共享文件夹

    sudo mount -o username=用户名,password=密码 //本机IP/共享目录 ~/挂载目录

  6. WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))

    第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...

  7. PDF 补丁丁 0.5.0.2731 发布(增加去除页面表单和链接水印功能)

    新的版本增加了简单的删除表单和链接批注的功能,使用该功能可去掉某些软件打上的水印. 在 PDF 文档选项中选中“清除页面所有表单”和“清除页面所有链接批注”项后,程序将会删除页面的表单和链接批注. 效 ...

  8. easyui的textbox赋值小结

    使用的系统中有个后台,需要填充单号,如下图: 每次往框里面填充都是一样的数据,复制.粘贴,而且当人数颇多的时候,就是体力活. 于是就想到通过执行js代码,自动填充这些数据. chrome下F12,查看 ...

  9. udev

    1.作为devfs的代替者,传统的devfs不能动态分配major和minor且有限,udev能像DHCP动态的分配IP一样去分配major和minor 2.device naming提供命名持久化机 ...

  10. 从客户端(txtContent="<p>1</p>")中检测到有潜在危险的 Request.Form 值

    输入1也报这个错误, <pages validateRequest="false" 改了也不行,在页头改也不行.到底什么情况呢? 从这个地方找到了答案:http://nt.d ...