core java 第四章笔记
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 第四章笔记的更多相关文章
- 《APUE》第四章笔记(1)
1.引言 本章介绍文件系统的特征和文件的性质.从stat函数开始,逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中,还将会说明修改这些属性的各个函数,并更详细地查看UNIX文件系统的结 ...
- “全栈2019”Java第四章:创建第一个Java程序
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- #Python编程从入门到实践#第四章笔记
#Python编程从入门到实践#第四章笔记 操作列表 1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...
- [Effective Java]第四章 类和接口
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- C#语言和SQL Server第十三 十四章笔记
十三章 使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章: ...
- 第三周学习java第四章学习总结及体会!
第三周java 2第四章的学习总结: 一.主要内容(类与对象): 1.类: 2.构造方法与对象的创建: 3.类与程序的基本结构: 4.参数传值: 5.对象的组合: 6.实例成员与类成员: 7.方法重载 ...
- 《HALCON数字图像处理》第四章笔记
目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...
- Java 第四章 选择结构2
第四章 选择结构 (二) switch 选择结构的执行流程是怎样的? switch 选择结构中break关键字的作用? 本章目标 掌握 switch 选择结构 能够综合运用 if 选择结构 和 swi ...
- 《APUE》第四章笔记(2)
下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...
随机推荐
- linux c redirect 重定向
用execvp实现时,运行adb,如果adb 服务没有启动,会启动adb服务,启动adb服务时,pipe返回的管道在读的时候堵塞了. 查看了popen的源码,发现popen是用sh -c来执行的,避免 ...
- C语言学习--可变数组
#ifndef _ARRAY_ #define _ARRAY_ typedef struct { int *array; int size; } Array; //此处定义结构数据类型 Array,虽 ...
- j2ee爬坑行之一:web容器
什么是容器? servlet没用main方法,它们受控于另一个java应用程序,这个应用程序就称为容器. tomcat就是这样一个容器.当web服务器得到一个指向某servlet的请求,此时服务器不是 ...
- 【HDOJ】2195 Monotone SE Min
简单DP.将[0,1]的浮点数离散化为[0,1000]的整数.最后再除以1000^2. /* 2195 */ #include <cstdio> #include <cstring& ...
- HDOJ 1017 A Mathematical Curiosity
Problem Description Given two integers n and m, count the number of pairs of integers (a,b) such tha ...
- LinGo:装货问题——线性规划,整数规划,1988年美国数模B题
7种规格的包装箱要装有两辆铁路平板车上去,包装箱的宽和高相同,但厚度(t,以cm计)和重量(以kg计)不同, 表A-1给出了每包装箱的厚度.重量和数量,每辆车有10.2m长的地方用来装包装箱(像面包片 ...
- 使用FTPClient进行文件服务器内文件的上传和下载
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...
- Mac下phpstorm 浏览器出现 502 bad gateway 解决办法
问题: 在网上搜了好久,都没有合适的解决办法,于是决定分享下自己鼓捣好久解决了的办法,希望能帮到大家. 出现上述情况,一般在phpstorm里都会出现这个提示 我们只需要点击蓝色的进去,或者点phps ...
- Ellipse常用快捷键
Ctrl+m:视窗大小变化 Ctrl+F6:在打开的文件件进行切换 Ctrl+F7:在资源窗口间切换Ctrl+F8:在各种模式下进行切换 Ctrl+e:选择某个打开的文件Shift+home:整行选取 ...
- [Redux] Writing a Todo List Reducer (Toggling a Todo)
Learn how to implement toggling a todo in a todo list application reducer. let todo = (state = [], a ...