一:规范

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

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. The Embarrassed Cryptographer POJ - 2635 同余模+高精度处理 +线性欧拉筛(每n位一起处理)

    题意:给出两数乘积K(1e100) 和 一个数L(1e6)  问有没有小于L(不能等于)的素数是K的因数 思路:把数K切割 用1000进制表示   由同余模公式知   k%x=(a*1000%x+b* ...

  2. P1403 [AHOI2005]约数研究

    原题链接 https://www.luogu.org/problemnew/show/P1403 这个好难啊,求约数和一般的套路就是求1--n所有的约数再一一求和,求约数又要用for循环来判断.... ...

  3. 使用docker部署springboot

    首先创建一个简单的springboot web项目 创建一个 DockerController,在其中有一个index()方法,访问时返回:Hello Docker! @RestController ...

  4. Unnitest测试框架总结

    Unnitest总结 第一点,setUp和tearDown方法 l  每次执行test开头的用例都会执行setUp和tearDown方法 l  如:  import unittest class M ...

  5. 使用ROME解析rss,如何获取icon图标

    问题 网站使用SpringMVC框架,实现了RSS订阅,但是在阅读器里面,只有网站的标题,没有网站的图标. 分析 ROME会从<channel>标签下指定的<link>地址中, ...

  6. 【BZOJ4771】七彩树(主席树)

    [BZOJ4771]七彩树(主席树) 题面 BZOJ 题解 如果没有深度限制,每次只询问子树内的颜色个数,除了树套树\(dfs\)序加前驱或者后继强行二维数点之外,还有这样一种做法: 把所有相同颜色的 ...

  7. notepad++设置(不断更新)

    1.主题设置 主题名称:Obsidian 字体字号:Courier New 10 设置方法: 设置---语言格式设置---选择主题,同时勾选“使用全局字体”“使用全局字体大小 补充一点: 修改两处地方 ...

  8. luogu4728 双递增序列 (dp)

    设f[i][j]表示以i位置为第一个序列的结尾,第一个序列的长度为j,第二个序列的结尾的最小值 那么对于f[i][j],有转移$f[i+1][j+1]=min\{f[i+1][j+1],f[i][j] ...

  9. 纯原生JS大图轮播

    CSS部分: CSS: <style type="text/css"> #banner { position: relative; width: 500px; heig ...

  10. 洛谷P3674 小清新人渣的本愿

    题意:多次询问,区间内是否存在两个数,使得它们的和为x,差为x,积为x. n,m,V <= 100000 解: 毒瘤bitset...... 假如我们有询问区间的一个桶,那么我们就可以做到O(n ...