Java 类的一般特征
1. 创建类的对象时的内存结构
用图来解释:
使用new 创建 a1 时,成员变量的值都是初始默认值。 然后显式的改变其属性的值。
创建a3 时,a3 是直接指向 a1, 即a3 = a1, 两个对象是一样的, 修改其一 会改变另一个。
2. 成员变量和局部变量的区别
成员变量:如果在声明的时候,不显式的赋值,那么不同数据类型会有不同的默认初始化值。
局部变量:一定要显式的赋值。(局部变量没有默认初始化值)
二者在内存中存放的位置不同:成员变量存在于堆空间中;局部变量:栈空间中。函数代码执行完,局部变量 即被弹出栈。
(题外话:关于变量的分类:1)按照数据类型的不同:基本数据类型(8种) & 引用数据类型
2)按照声明的位置的不同:成员变量 & 局部变量 )
3. 匿名类对象:创建的类的对象是匿名的。
1)当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象。
2)特点:创建的匿名类的对象只能够调用一次!
4. 方法的重载(overload)
要求:1.同一个类中 2.方法名必须相同 3.方法的参数列表不同(①参数的个数不同②参数类型不同)
补充:方法的重载与方法的返回值类型没有关系!
(eclipse 多行注释:Ctrl+/ 或 Ctrl + Shift + / ; 取消多行注释:Ctrl + / , Ctrl +Shift + \ 。)
5. 可变个数的形参的方法:
* 1.格式:对于方法的形参: 数据类型 ... 形参名
* 2.可变个数的形参的方法与同名的方法之间构成重载
* 3.可变个数的形参在调用时,个数从0开始,到无穷多个都可以。
* 4.使用可变多个形参的方法与方法的形参使用数组是一致的。
* 5.若方法中存在可变个数的形参,那么一定要声明在方法形参的最后。
* 6.在一个方法中,最多声明一个可变个数的形参。
6. 方法的参数传递
Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量
2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。
以交换两个变量的值阐述。
(1) 直接在main 函数里
参数交换直接在栈里进行。
(2)定义一个swap(int i, int j) 函数。
在调用函数后,并不能实现变量值的交换。因为只是值传递。
(3)定义一个swap(DataSwap d) 函数。DataSwap 是定义的一个类,里面有两个参数 i 和 j 。
因为是引用类型变量,传递的是地址,所以在调用函数的时候可以实现变量值的交换。
看一个例子:
class Value {
int i = 15;
}
class TestValue {
public static void main(String argv[]) {
TestValue t = new TestValue();
t.first();
}
public void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i) {
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
问 TestValue 执行完的结果。
所以是:15 0
20
7. 面向对象特征之一:封装和隐藏
四种访问权限修饰符:
对于class的权限修饰只可以用public和default(缺省)。
public类可以在任意地方被访问。
default类只可以被同一个包内部的类访问。
8. 构造器
构造器的特征:
它具有与类相同的名称
它不声明返回值类型。(与声明为void不同)
不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
构造器的作用:创建对象;给对象进行初始化 。
注意:Java语言中,每个类都至少有一个构造器
默认构造器的修饰符与所属类的修饰符一致
一旦显式定义了构造器,则系统不再提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承
9. this 关键字
* 1.可以用来修饰属性、方法、构造器
* 2.this理解为当前对象或当前正在创建的对象.谁调用我,this 就表示谁。比如:this.name,this.show();
* 3.可以在构造器中通过“this(形参)”的方式显示的调用本类中其它重载的指定的构造器。
* 要求:1.在构造器内部必须声明在首行!
2.若一个类中有n个构造器,那么最多有n-1个构造器中使用了this(形参);
3.调用this()的构造器不能构成环。
10. JavaBean是一种Java语言写成的可重用组件。所谓javaBean,是指符合如下标准的Java类:
类是公共的
有一个无参的公共的构造器
有属性,且有对应的get、set方法
11. package 关键字
package:声明源文件所在的包,写在程序的第一行。
* 每“.”一次,表示一层文件目录。
* 包名都要小写。
12. import 关键字
若引入的包为:java.lang,则编译器默认可获取此包下的类,不需要再显示声明。
import语句出现在package语句之后、类定义之前
可以使用import lee.* ;语句,表明导入lee包下的所有类。而lee包下sub子包内的类则不会被导入。import lee.sub.*;
import语句不是必需的,可坚持在类里使用其它类的全名
JDK 1.5加入import static语句,表示导入指定类的static的属性或方法。
如果导入的类是java.lang包下的,如:System String Math等,就不需要显式的声明。
JDK中主要的包介绍:
1. java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能。
2. java.net----包含执行与网络相关的操作的类和接口。
3. java.io ----包含能提供多种输入/输出功能的类。
4. java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。
5. java.text----包含了一些java格式化相关的类
6. java.sql----包含了java进行JDBC数据库编程的相关类/接口
7. java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界 面(GUI)。
8. java.applet----包含applet运行所需的一些类。
Java 类的一般特征的更多相关文章
- JAVA:类的三大特征,抽象类,接口,final关键字<3>
一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...
- Java 类的高级特征2
1. static 关键字 static,静态的,可以用来属性.方法.*代码块(或初始化块).*内部类 (1) static修饰属性(类变量): 1.由类创建的所有的对象,都共用这一个属性 2.当其 ...
- Java类的三大特征
1.三大特征是封装.继承和多态 2.封装 特点: 需要修改属性的访问控制符为private: 创建getter/setter方法用于属性的读写: 在getter/setter方法中加入属性控制语句,用 ...
- 进阶Java编程(10)反射与简单Java类
1,传统属性自动赋值弊端 简单Java类主要由属性构成,并且提供有setter与getter类,同时简单Java类最大的特征就是通过对象保存相应的类属性的内容.但是如果使用传统的简单Java类开发,那 ...
- java反射(四)--反射与简单java类
一.传统简单java类 简单的java类主要是由属性所组成,并且提供有相应的setter以及getter的处理方法,同时简单java类最大的特征就是通过对象保存相应的类的属性内容,但是如果使用传统的简 ...
- Java 类的一些高级特征
1. 面向对象的特征二:继承性 * 1.为什么要设计继承性? 继承的出现提高了代码的复用性. 继承的出现让类与类之间产生了关系,提供了多态的前提. * 2.通过"class A extend ...
- Java学习第三篇:类的三大特征,抽象类,接口,final关键字
一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...
- java基础知识(五)java类
类是java的核心和本质,是java语言的基础. 一.java中的类 1.类class 一个类可以包含局部变量.实例变量.类变量(静态变量) 一个类至少有一个构造方法,如果没有,系统会默认给出一个无参 ...
- java类,接口浅谈
一般类,抽象类,接口的使用场景: 类;共同的特征和行为的抽取和封装 接口:标准,规范(功能的扩展) 需要对某个类进行功能的扩展,就让某个类实现这个接口,抽取出来称为接口 内部类: ...
随机推荐
- android实现系统电话通话过程中自动感应黑屏
package com.developmenttools.customui.activity; import java.util.HashSet;import java.util.Set; impor ...
- [html] HTML结构的语义化
原文链接:http://www.cnblogs.com/freeyiyi1993/p/3615179.html 1.什么是html语义化 选择合适的html标签,便于开发者阅读和写出更优雅的代码的同时 ...
- [Hibernate] - EAGER and LAZY
Hibernate中的字段映射中的Fetch有两种方式:EAGER和LAZY Eager:全部抓取 Lazy:延迟抓取 如果在字段中声明为Eager,那么在取得当前Bean时,同时会抓取Bean中的关 ...
- 如何设置DIV水平、垂直居中
一.水平居中 需要设置两点: 1 设置DIV 的width属性即宽度. 2 设置div的margin-left和margin-right属性即可 代码: <div style="w ...
- 是不是每个新手都要在samba那儿交足够的时间学费?
每次重新装了虚拟机都会在安装几个必要的服务器这个浪费不少时间, 这一次在Fedora20上装samba,这么配置都无法再windows上登陆,查看了各种配置文件,折腾的天昏地暗,最后终于找到原因: 在 ...
- ListView 搭配SimpleAdapter
这是SimplerAdapter的构造函数 public SimpleAdapter(Context context, List<? extends Map<String, ?>&g ...
- 不能上传文件 unknown error happened
做一件事情: 1 找出问题,发现问题,2 搜索问题,3 找到答案,验证之.4 找不到答案,想出思路,验证....5 不断想,记录笔记.
- java static 关键字
static 修饰成员函数:(静态函数) 1)静态函数可以用类名和对象进行调用. 2)直接访问静态成员,但不能访问非静态成员变量. 3)非静态函数可以直接访问静态与非静态的成员.(非静态函数只能由对象 ...
- Android 子activity关闭 向父activity传值
使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈. 可变通的,你可以启动一个Activity作为子Activity,它与父Activi ...
- servlet和web容器之间的关系
Java是一种动态加载和运行的语言.也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象.Servlet ...