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注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...
随机推荐
- HDU1800 字典树写法
题意:高级魔法师可以教低级魔法师 魔法扫把技能,同时教会了的低级魔法师又可以教比他更低级是,是传递的关系 同时如果教会了的话,他们可以同时坐一个扫把 问最少需要多少个扫把 思路:就是判断相同的数字最多 ...
- 洛谷P1983车站分级题解
题目 这个题非常毒瘤,只要还是体现在其思维难度上,因为要停留的车站的等级一定要大于不停留的车站的等级,因此我们可以从不停留的车站向停留的车站进行连边,然后从入度为0的点即不停留的点全都入队,然后拓扑排 ...
- C#常用的命名规则汇总
C#常用的命名规则汇总 来源 https://www.cnblogs.com/pengyouqiang88/p/5021128.html 本文转载自脚本之家 本文详细汇总了C#常用的命名规则.分享给大 ...
- 让$this->error()返回json配置
// 表单请求类型伪装变量'var_method' => '_method',// 表单ajax伪装变量'var_ajax' => '自定义',// 表单pjax伪装变量'var_pjax ...
- ecplise An incompatible version [1.2.14] of the APR based Apache Tomcat Native library is installed, while T
原文:https://www.cnblogs.com/levy-home/p/5676322.html 到http://archive.apache.org/dist/tomcat/tomcat-co ...
- CF285E Positions in Permutations(dp+容斥)
题意,给定n,k,求有多少排列是的 | p[i]-i |=1 的数量为k. Solution 直接dp会有很大的后效性. 所以我们考虑固定k个数字使得它们是合法的,所以我们设dp[i][j][0/1] ...
- [HNOI2015]菜肴制作(拓扑排序)
知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1. 由于菜肴之间口味搭 ...
- 【git】git撤销与回滚
git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作.撤销分两种情况,一个是commit之前,一个是c ...
- linux防火墙,高级策略策略实例详解(实例一)
双线服务器的控制问题: 要求:写出这个电信用户访问到双线web服务器时的IP变化过程(只写源IP,目标IP,和做SNAT还是DNAT等) 你觉得有没有问题? 实验环境: 精简一点可以使用下面的四台虚拟 ...
- yii2记录
yii2的gridview使用大全 --- 18个问答 Yii2中多表关联查询(hasOne.hasMany.join.joinwith) Yii2.0 RESTful API 之速率限制(包含res ...