一:规范

将每一个类存在一个单独的源文件中

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基础知识(对象与类)的更多相关文章

  1. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  2. Java核心技术 卷1 基础知识-第一天

    基本数据类型 java是一种强数据类的的语言 共有8种基本数据类型 其中: 整型4种 int(4字节) short(2字节) long(8字节) byte(1字节) java中整型的范围与机器无关 长 ...

  3. JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)

    一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...

  4. JAVA核心技术I---JAVA基础知识(时间类)

    一:时间类库了解 java.util.Date(基本废弃,Deprecated) –getTime(),返回自1970..1以来的毫秒数 java.sql.Date(和数据库对应的时间类) //与数据 ...

  5. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  6. 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  7. java前三本基础知识总结

    基础软件:1:JDK,JRE,JVM(一些参数和作用),GC(机制和算法),Class,Loader(机种作用,加载顺序) 2:环境搭建:JAVA_HOME,path,class 语言基础:引用类型: ...

  8. Java中浮点数的基础知识

    偶然查看Math.round的JDK public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float val ...

  9. Java学习之旅基础知识篇:面向对象之封装、继承及多态

    Java是一种面向对象设计的高级语言,支持继承.封装和多态三大基本特征,首先我们从面向对象两大概念:类和对象(也称为实例)谈起.来看看最基本的类定义语法: /*命名规则: *类名(首字母大写,多个单词 ...

  10. Java学习之旅基础知识篇:数据类型及流程控制

    经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...

随机推荐

  1. [POJ2976] Dropping tests

    传送门:>Here< 题意:给出长度相等的数组a和b,定义他们的和为$\dfrac{a_1+a_2+...+a_n}{b_1+b_2+...+b_n}$.现在可以舍弃k对元素(一对即$a[ ...

  2. Ionic3 新增 Service

    service是单例模式的 新增Service类 search.service.ts import {Injectable} from '@angular/core'; @Injectable() e ...

  3. hosts学习整理

    hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库” (测试发现,对于https 协议的网站无效,果然https还是有作用的,不会被屏蔽) ...

  4. python 去重

    List: listA = ['python','python','言','是','一','门','动','态','语','言'] print sorted(set(listA), key = lis ...

  5. debian源

    修改debian9 stretch源 修改配置文件/etc/apt/sources.list 修改成163源: deb http://mirrors.163.com/debian/ stretch m ...

  6. luogu1484 种树 (优先队列)

    我每次都想选那个最大的.或者是它旁边的两个一起选,如果这两个一起选会大于那个最大的的话 那我就先把那个最大的选了,再提供一个反悔的选项(类似于网络流的思路?),就是我可以再把种的树换成它旁边那两个,也 ...

  7. centos7下安装部署mongodb集群(副本集模式)

    环境需求:Mongodb集群有三种模式:  Replica Set, Sharding,Master-Slaver.  这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...

  8. hdu 3790 最短路问题 (spfa练手)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  9. A1094. The Largest Generation

    A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level bel ...

  10. bzoj3829 POI2014 FAR-FarmCraft

    题目链接 思路 用\(f[i]\)表示完成第\(i\)棵子树所需要得时间. 考虑如果有两个子树\(a\)和\(b\),如果先去完成子树\(a\),那么对于花费得时间就是\(f[b] + siz[a] ...