import java.util.*;
public class Employee {
private static int nextid = 1;
private String name;
private double salary;
private int id;
public Employee(String n,double s)
{
name = n;
salary = s;
id = 0;
}
public String getname()
{
return name;
}
public double getsalary()
{
return salary;
}
public int getid()
{
return id;
}
public void setid()
{
id = nextid;
nextid++;
}
public static int getnextid()
{
return nextid;
}
public static void mian(String[] args)
{
Employee e = new Employee("Harry",50000);
System.out.println(e.getname()+" "+e.getsalary());
} public static void main(String[] args) {
// TODO 自动生成的方法存根
Employee[] staff = new Employee[3];
staff[0]=new Employee("TOM",40000);
staff[1]=new Employee("Dick",60000);
staff[2]= new Employee("Harry",65000);
for(Employee e : staff)
{
e.setid();
System.out.println("name="+e.getname()+"id="+e.getid()+"salary="+e.getsalary());
}
int n = Employee.getnextid();
System.out.println("next available id = "+n); } }

1/类中的方法被标记为public。关键字public意味着任何类的任何方法都可以调用这些方法。

2/在类中使用

private int a;

意味着只有类本身的方法能够访问这些实例域,而其他类的方法不能够读写这些域。

3/有时候,某个实例域本身就是对象,比如我们在类中定义一个private String name;name域是String类对象,类通常包括类型属于某个类类型的实例域。

4/构造器与类重名,当我们在构造一个类的对象的时候,构造器就会运行,以便将实例域初始化为所希望的状态。

5/构造器总是伴随着new操作符的执行被调用,不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。

比如:

staff[0]=new Employee("diyige",75000,1987,12,25);

A、构造器与类同名。

B、每个类可以有一个以上的构造器。

C、构造器可以有0个,1个,或者多个参数。

D、构造器没有返回值。

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

F、不要再构造器中构造与实例域重名的局部变量。

6/在每一个方法中关键字this表示隐式参数,比如;

public void raisesalary(double bypercent)

{

       double raise = this.salary*bypercent/100;

       this.salary = this.salary + raise;

}

在这个方法中,double bypercent被称为显示参数。

7/仅仅是查看并返回对象的状态而不对实例域做出修改的方法称为访问器方法。

对实例域做出修改的方法称为更改器方法。

8/可以将实例域定义为final,构建对象时必须初始化这样的域。也就是说,必须确保被一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够对它进行修改。上面的程序中Employee类中的name就可以声明为final,因为对象构造后,名字这个值就不会再被修改。

10/static关键字代表着实例域属于类,不属于任何的对象。

例如在Math类中定义一个静态常量。

Public class Math()

{

       ······

       public static final double PI = 3.1415926;

       ······

}

在程序中就可以使用Math.PI的形式来获得这个常量。

如果static被省略,PI就会变成Math的一个实例域,那么就只有通过Math类的对象来访问PI,而且每一个Math对象都有它自己一份对PI的拷贝。

11/静态方法是一种不能向对象操作的方法,例如:Math类中的pow()方法就是一个静态方法。

Math.pow(x,a);

在运算中不使用任何的Math对象。也就是说没有隐式参数。所以也可以认为是一个没有this参数的方法。在Employee类中,静态方法不能访问id实例域,因为它不能操作对象,但是静态方法可以访问自身的静态域。

例如:

public static int getnextid()

{

   return nextId;

}

可以通过类名调用这个方法:

int n = Employee.getnextid();

也是可以省略掉static的,但是如果省略掉就必须通过Employee类的对象来调用这个方法。

一般两种情况使用静态方法:

A:一个方法不需要访问对象的状态,其所需要的参数都是通过显式参数提供。

B:一个方法只需要访问类的静态域。

我们最常见的main方法也是一个静态的方法,因为它不对任何的对象进行操作。当我们启动eclipse的时候还没有一个对象呢。

12/程序设计语言中将参数传递给方法有三种方式:

按值调用:表示方法接受的是调用者提供的值。

引用调用:表示方法接受的是调用者提供的变量地址。

名称调用:这种传递方式已经成为历史。

在Java的世界里,总是采用按值调用。

方法参数的两种类型:

A.基本数据类型

B.对象引用

当java进行基本数据类型行的引用的时候,不会改变其数值。进行对象引用的时候,则会改变。

13/在编写构造器的时候可以在每一个参数的前面加上一个a,增强代码的可读性。

14/如果在构造器中的第一个语句形如this(···);这个构造器将调用同一类的 另一个构造器,这样公共的构造器代码只编写一次就可以了。

15/Java允许使用包将类组织起来。使用包的主要原因是确保类名的唯一性。为了保证包名的绝对唯一性,sun公司建议将公司的因特网域名以逆序的形式作为包名。

一个类可以使用所属包的所有类,以及其他包的公有类。我们可以采用两种方式,第一种是在每个类名前添加完整的包名。例如:

java,util.Date today = new java.util.Date();

这种方式真的很残废。

另外一种是用

import java.util.*;

就可以导入java.util包中的所有类。

Import java.util.Date;

可以导入一个包中的特定类。

core java 第四章笔记的更多相关文章

  1. 《APUE》第四章笔记(1)

    1.引言 本章介绍文件系统的特征和文件的性质.从stat函数开始,逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中,还将会说明修改这些属性的各个函数,并更详细地查看UNIX文件系统的结 ...

  2. “全栈2019”Java第四章:创建第一个Java程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  4. [Effective Java]第四章 类和接口

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. C#语言和SQL Server第十三 十四章笔记

    十三章  使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章:                                                       ...

  6. 第三周学习java第四章学习总结及体会!

    第三周java 2第四章的学习总结: 一.主要内容(类与对象): 1.类: 2.构造方法与对象的创建: 3.类与程序的基本结构: 4.参数传值: 5.对象的组合: 6.实例成员与类成员: 7.方法重载 ...

  7. 《HALCON数字图像处理》第四章笔记

    目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...

  8. Java 第四章 选择结构2

    第四章 选择结构 (二) switch 选择结构的执行流程是怎样的? switch 选择结构中break关键字的作用? 本章目标 掌握 switch 选择结构 能够综合运用 if 选择结构 和 swi ...

  9. 《APUE》第四章笔记(2)

    下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...

随机推荐

  1. uboot mkimage使用详解

    mkimage使用详解uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件. mkimage在制作映象文件的时候,是在原来的可执行映象文件的 ...

  2. [Design Pattern] Command Pattern 简单案例

    Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order ...

  3. JDK 高性能编程之容器

    高性能编程在对不同场景下对于容器的选择有着非常苛刻的条件,这里记录下前人总结的经验,并对源码进行调试 JDK高性能编程之容器 读书笔记内容部分来源书籍深入理解JVM.互联网等 先放一个类图util,点 ...

  4. 「Githug」Git 游戏通关流程

    Githug 他喵的这是个啥!?难道不是 GitHub 拼错了么,和 Git 什么关系? 和游戏又有什么关系? 其实,他的元身在这里:https://github.com/Gazler/githug  ...

  5. 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法

    S3C44B0开发板中,用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法    1.开发板说明:  开发板上已有移植好的UBOOT运行.   2.交叉编译工具链为arm-linu-g ...

  6. DB2 递归

    公司一直用递归来生成组织机构的树状图.看了上面的文档,应该立马就能写了. 不过前几天,有个功能涉及到下面的状况: 需要组织机构等级为1级的下面所有子机构.且按照一级组织机构分组.大家都觉得很难,哥就一 ...

  7. ViewPager的setOnPageChangeListener方法详解

    http://www.eoeandroid.com/forum.php?mod=viewthread&tid=548173 ViewPage使用时,最关键的代码就是setOnPageChang ...

  8. AIX Study之--AIX网卡配置管理(ent0、en0、et0)

    AIX Study之--AIX网卡配置管理(ent0.en0.et0) 1.查看AIX系统网卡信息: [root@aix211 /]#lsdev |grep et  en0 Available 1L- ...

  9. (五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAxOTcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  10. PHP安全编程:register_globals的安全性 全局变量注册(转)

    如果你还能记起早期Web应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会.当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立.它 ...