JAVA核心技术I---JAVA基础知识(对象与类)
一:规范
将每一个类存在一个单独的源文件中

Employee.java
public class Employee {
private int age;
private float salay;
private boolean sex;
private String name; //char name[]可以
public Employee(String nm,float sy,int ag,boolean sx) {
this.age=ag;
this.salay=sy;
this.sex=sx;
this.name=nm;
}
public void printInfo() {
System.out.println(name+" "+age+" "+salay+" "+sex);
}
}
Employee.java
EmployeeTest.java
public class EmployeeTest {
public static void main(String args[]) {
Employee[] staff=new Employee[]; //java中没有指针,可以使用数组代替
staff[]=new Employee("faffe",12.34f,,true);
staff[]=new Employee("faaaf",12.64f,,false);
staff[]=new Employee("fafwf",11.34f,,true);
for(Employee e:staff) {
e.printInfo();
}
}
}
EmployeeTest.java
faffe 12.34 true
faaaf 12.64 false
fafwf 11.34 true
二:构造方法(同C++)
public class Employee {
private int age;
private float salay;
private boolean sex;
private String name; //char name[]可以
//多种构造,属于重载overload,不限于构造方法
public Employee() {
}
public Employee(Employee e) {
this.age=e.getAge()+;
this.sex = !e.getSex();
this.name=e.getName();
this.salay=e.getSalay()+;
}
public Employee(String nm,float sy,int ag,boolean sx) {
this.age=ag;
this.salay=sy;
this.sex=sx;
this.name=nm;
}
public int getAge() {
return age;
}
public float getSalay() {
return salay;
}
public boolean getSex() {
return sex;
}
public String getName() {
return name;
}
public void printInfo() {
System.out.println(name+" "+age+" "+salay+" "+sex);
}
}
public static void main(String args[]) {
Employee[] staff=new Employee[]; //java中没有指针,可以使用数组代替
staff[]=new Employee("faffe",12.34f,,true);
staff[]=new Employee("faaaf",12.64f,,false);
staff[]=new Employee("fafwf",11.34f,,true);
for(Employee e:staff) {
e.printInfo();
}
Employee cstaff=new Employee(staff[]);
cstaff.printInfo();
}
faffe 12.34 true
faaaf 12.64 false
fafwf 11.34 true
faffe 62.34 false
不同之处:在于实例化对象时
java必须使用new实例化对象,而C++可以直接构造
C++:
Employee e("ffaw",...);
JAVA:
Employee e=new Employee("fwaf",...)
此外:java含有垃圾回收机制,所以没有析构函数。但是含有finalize方法,用于在回收对象前调用
三:main方法
每一个类都可以在单独文件中包含一个
public static void main(String args[])方法
用于测试每个模块
四:赋值问题:基本型别赋值是拷贝赋值对象赋值是reference
可以认为:基本类型的变量值小,可以直接拷贝;对象包含多个值,不容易复制,赋值采用共享同一块内存区域更加快
值传递:基本类型
int a,b;
a=;
b=a;
System.out.println(a+" "+b);
b++;
System.out.println(a+" "+b);
public static void swap(int a,int b) {
int temp=a;
a=b;
b=a;
}
System.out.println(a+" "+b);
swap(a,b);
System.out.println(a+" "+b);
引用传递:对象引用
public class EmployeeTest {
public static void main(String args[]) {
Employee e=new Employee("fafwa",12.33f,,true);
Employee d=e;
e.printInfo();
d.printInfo();
change(e); //修改e,会发现d也会变化
e.printInfo();
d.printInfo();
}
public static void change(Employee obj) {
obj.setAge(obj.getAge()+);
}
}
fafwa 12.33 true
fafwa 12.33 true
fafwa 12.33 true
fafwa 12.33 true
五:初值问题
对于函数局部变量,必须赋初值,不然无法通过编译。
对于类的成员变量,类似于c中的静态变量或者全局变量会被赋初值
public class EmployeeTest {
public static void main(String args[]) {
Employee e=new Employee();
e.printInfo();
}
}
public class Employee {
private int age;
private float salay;
private boolean sex;
private String name; //char name[]可以
public Employee() {
//并未赋值,成员变量存放默认值
}
}
null 0.0 false
默认初值:
– short 0 int 0 long 0L
– boolean false
– char '\u0000‘
– byte 0
– float 0.0f
– double 0.0d
– String null
六:类中初始化块
只要构造类的对象,就会立刻被执行
public class Employee {
//实例域初始化块
private int age;
private float salay;
private boolean sex;
private String name; //char name[]可以
static
{
//.... 静态初始化块,会在对象构造前执行
System.out.println("static block");
}
{ //对象初始化块
System.out.println("object block");
}
public Employee() {
System.out.println("construct block");
}
}
public static void main(String args[]) {
Employee e=new Employee();
Employee d=new Employee();
}
static block //先执行类静态块,执行一次
object block //每一次对象构造前都会先执行对象初始化块,放在构造方法后面也是先执行与构造方法
construct block //之后执行构造方法
object block
construct block
{ //对象初始化块
System.out.println("object block");
}
public Employee() {
System.out.println("construct block");
}
{ //对象初始化块
System.out.println("object2 block");
}
static block
object block
object2 block
construct block
object block
object2 block
construct block
JAVA核心技术I---JAVA基础知识(对象与类)的更多相关文章
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- Java核心技术 卷1 基础知识-第一天
基本数据类型 java是一种强数据类的的语言 共有8种基本数据类型 其中: 整型4种 int(4字节) short(2字节) long(8字节) byte(1字节) java中整型的范围与机器无关 长 ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- JAVA核心技术I---JAVA基础知识(时间类)
一:时间类库了解 java.util.Date(基本废弃,Deprecated) –getTime(),返回自1970..1以来的毫秒数 java.sql.Date(和数据库对应的时间类) //与数据 ...
- [Java面试三]JavaWeb基础知识总结.
1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...
- 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- java前三本基础知识总结
基础软件:1:JDK,JRE,JVM(一些参数和作用),GC(机制和算法),Class,Loader(机种作用,加载顺序) 2:环境搭建:JAVA_HOME,path,class 语言基础:引用类型: ...
- Java中浮点数的基础知识
偶然查看Math.round的JDK public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float val ...
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
Java是一种面向对象设计的高级语言,支持继承.封装和多态三大基本特征,首先我们从面向对象两大概念:类和对象(也称为实例)谈起.来看看最基本的类定义语法: /*命名规则: *类名(首字母大写,多个单词 ...
- Java学习之旅基础知识篇:数据类型及流程控制
经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...
随机推荐
- BZOJ 1977 严格次小生成树(算竞进阶习题)
树上倍增+kruskal 要找严格次小生成树,肯定先要找到最小生成树. 我们先把最小生成树的边找出来建树,然后依次枚举非树边,容易想到一种方式: 对于每条非树边(u,v),他会与树上的两个点构成环,我 ...
- 【XSY1515】【GDKOI2016】小学生数学题 组合数学
题目描述 给你\(n,k,p\)(\(p\)为质数),求 \[ \sum_{i=1}^n\frac{1}{i}\mod p^k \] 保证有解. \(p\leq {10}^5,np^k\leq {10 ...
- Android如何在一个TextView中实现多种文本风格?
本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解Android中,如何在一个 ...
- BJWC2018上学路线
题目描述 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路口.小B 喜欢走最短的 ...
- Mysql 允许远程连接
授权的方式允许任何主机访问mysql服务器: mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' W ...
- hex文件格式
hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex. Hex文件格式解析 Hex文件如果用特殊的程 ...
- iptables防火墙详解(三)
linux 高级路由 策略路由(mangle表) lartc(linux advanced routing and traffic control) http://www.lartc.org # rp ...
- Shiro中的Remember me设置
1. 在Spring的相关配置文件中加入如下Remember me管理器配置: <!-- rememberMe管理器 --> <bean id="rememberMeMan ...
- 编写高质量代码:改善Java程序的151个建议 --[52~64]
编写高质量代码:改善Java程序的151个建议 --[52~64] 推荐使用String直接量赋值 Java为了避免在一个系统中大量产生String对象(为什么会大量产生,因为String字符串是程序 ...
- Servlet -- 重定向
重定向的两种方式: 1: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws S ...