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. 日志收集框架 Exceptionless

    日志收集框架 Exceptionless 前言 从去年就答应过Eric(Exceptionless的作者之一),在中国会帮助给 Exceptionless 做推广,但是由于各种原因一直没有做这件事情, ...

  2. C#开发学习——.net C#中页面之间传值传参的方法以及内置对象

    1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能 ...

  3. java 代码格式(转)

    //转至博客:http://developer.51cto.com/art/201202/320317.ht /** * Java编码格式个人推荐,参考JDK源码和Hyperic HQ源码(原spri ...

  4. Mifare 0简介

    Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本.小容量的卡片.低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片 ...

  5. Xamarin.Forms WebView

    目前本地或网络的网页内容和文件加载 WebView是在您的应用程序显示Web和HTML内容的视图.不像OpenUri,这需要用户在Web浏览器的设备上,WebView中显示您的应用程序内的HTML内容 ...

  6. Codeforces Round #312 (Div. 2)小结

    爆炸了爆炸了...E题一个裸线段树没打完,A题wa了半天...... 爆炸了爆炸了....爆炸了爆炸了....rank270+滚粗 以后还是得多做模拟题...

  7. SqlServer新建视图

    一.使用SQL Server 2005数据库管理系统创建视图 1. 启动SQL Server 2005. 2. 在“对象资源管理器”窗口中找到Student数据库,打开Student文件夹,在“视图” ...

  8. Number of 1 Bits——LeetCode

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  9. Nodejs in Visual Studio Code 05.Swig+Bootstrap

    1. 开始 准备好Express+Swig的练习代码:https://github.com/Mengkzhaoyun/nodepractise 准备好AdminLTE后台管理模版:https://ww ...

  10. Hadoop操作hdfs的命令【转载】

    本文系转载,原文地址被黑了,故无法贴出原始链接. Hadoop操作HDFS命令如下所示: hadoop fs 查看Hadoop HDFS支持的所有命令 hadoop fs –ls 列出目录及文件信息 ...