认识Java
Posted 冬色
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识Java相关的知识,希望对你有一定的参考价值。
Java简介
- Java语言体系中,最基础的部分是Java SE,其是Java的标准版本,包含了Java的一些面向对象的特性等;Java EE是Java的企业版;Java ME用于嵌入式开发
- JVM:Java Virtual Machine;JRE:Java Runtime Environment;JDK:Java Development Kits
安装步骤
- 安装JDK。成功标志:
java -version
- 配置环境变量。JAVA_HOME:JDK安装路径;PATH:JDK目录文件位置(jdk目录in);CLASSPATH:类库文件位置(jdk目录lib)。成功标志:
javac -version
编译运行Java程序
- Java的源代码文件以
.java
结尾 - 使用编译器,也即是
javac
对源代码文件进行编译
操作。产生.class
文件,该文件是Java的字节码文件,字节码文件与Windows或者是Linux无关 - 使用解释器,也即是
java
对.class
文件进行解释运行
,注意:使用java
解释时,字节码文件不需要带.class
后缀名
使用Eclipse开发Java程序
- 使用Eclipse,首先应创建一个Java project
- 创建
Java Package
,创建Java程序包的目的在于便于管理Java代码,类似于命名空间
- 运行Java程序。Run as Java Application
Java程序构成
- 对象(object):类的实例。
- 类(class)
- 方法(method)
- 实例变量
Java标识符
Java标识符由字母,数字,下划线,美元符号组成。其中,标识符首字符不能是数字。
一些约定俗称的规定:
- 类和接口使用大驼峰式写法,如MyClass,HelloWorld
- 方法名使用小驼峰式写法,如myName,setTime
- 常量名使用全大写,词与词之间使用下划线连接,如SIZE_NAME
变量和常量
- 变量,如
int
,实际上是一种基本类型(premitive type)
- 常量,使用关键字
final
声明,不能修改的量
注释
//
注释一行/*...*/
注释多行/**...**/
注释若干行并写入javadoc文档
Java中的object.equals()和==区别
- 对于
==
,如果作用于基本数据类型的变量,则直接比较存储的值是否相等;如果比较引用类型的变量,则比较的是对象的"地址"是否相等。 - 对于
object.equals()
,equals()不能作用于基本数据类型。如果没有对equals()方法进行重载,则比较的是对象的"地址";但诸如String
,Date
等类对equals()进行了重载,比较的是“地址”(在Java中称为引用)所指向的对象。
附录:8种基本数据类型
- 浮点型:float(4 bytes),double(8 bytes)
- 整型:byte(1 byte),short(4 bytes),int(4 bytes),long(8 bytes)
- 字符型:char(2 bytes)
- 布尔型:boolean
注意:String不是基本数据类型
Java的boolean和数值的强制转换
- 在C语言中,非0即是true,否则为false,但是在Java中boolean是不能和int等互转的,如While(1){}在Java中是错误的。
一维数组和二维数组
- 一维数组:
type []arrayName=new type[arrayNumber];
e.g.:int []ages={1,2,3}
- 二维数组:
type [][]arrayName=new type[row][column]
e.g.:String [][]name={{"Simon","Nancy"},{"Tim","Che"}}
方法签名
访问修饰符 返回值类型 方法名(参数列表){方法体}
e.g.:public void main(String args[]){...}
方法重载
所谓之方法重载,是方法名相同,但参数列表不同(参数类型/个数/顺序至少有一项不同)的方法。如下列重载的方法:
void f(int i) {
System.out.println("i=" + i);
}
void f(float f) {
System.out.println("f=" + f);
}
void f(String s) {
System.out.println("s=" + s);
}
void f(String s1, String s2){
System.out.println("s1+s2="+(s1+s2));
}
void f(String s, int i){
System.out.println("s="+s+",i="+i);
}
Java的封装机制
面向对象的三大特性:封装,继承,多态
Java封装的方法
- 在需要修饰的属性前添加修饰符,如
private
关键字 - 对每个属性提供公共方法访问
在公共方法中提供属性值的合法性判断语句
e.g.:package com.mengngn public class People{ private double height; public double getHeight(){ return height; } public void setHeight(double newHeight){ if(newHeight<0) return; height=newHeight; } }
包
由于类名是可重复的,所以Java提供了类似命名空间
的机制,包package
//定义包。注意,包名定义应放在源程序的第一行,包名可用“.”隔开
package PackageName
//正如目录可以用"/"来区分层次,包可以使用"."分层
package com.coder.chen
包名的命名规范是全小写字母,导入包的方法是:import com.coder.chen.*
内部类
类内可定义另外一个类,这就是内部类
。内部类又分为:成员内部类
,静态内部类
,局部内部类
和匿名内部类
匿名内部类举例
package com.coder.chen; public class Outer { public Inner getInner(final String name, String city) { //匿名内部类 return new Inner() { private String nameStr = name; public String getName() { return nameStr; } }; } }
继承的语法
一个子类继承父类的语法:class SubClass extends SuperClass{...}
方法重写
可以对父类的方法重写,重写的方法必须与父类的方法签名一致,即返回值类型,参数类型,参数个数和方法名都必须一致。
继承的初始化顺序
继承的初始化顺序是先初始化父类再初始化子类。
final关键字
final
修饰类则该类为最终类
,不允许被继承final
修饰方法,则该方法不允许重写
final
修饰属性,则该属性不需要隐式初始化
,属性必须有值或者在构造函数中赋值。final
修饰变量,则变量是常量
super关键字
super
在子类中使用代表父类对象
。- 访问父类方法:
super.method()
- 访问父类属性:
super.property
子类构造方法需要调用父类构造方法时,在子类构造方法
最前面
的位置:super()
多态是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。多态也称作动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。Java的多态
向上转型
SuperClass c=new SuperClass();//c是父类引用,指向本类对象
SuperClass c=new SubClass();//c是父类引用,指向的是子类对象
不能使用一个子类的引用指向父类对象
多态的实现方式
多态的实现方式:方法重写,抽象类和抽象方法和接口
抽象类和抽象方法
abstract void method();
1.用 abstract 修饰符定义抽象类
2.用 abstract 修饰符定义抽象方法,只用声明,不需要实现
3.包含抽象方法的类就是抽象类
4.抽象类中可以包含普通的方法,也可以没有抽象方法
5.抽象类的对象不能直接创建,我们通常是定义引用变量指向子类对象。接口
修饰符 interface 接口名 [extend 其它类]{//声明变量,抽象方法}
e.g.:interface Animal { //编译错误,x需要初始化,因为是 static final 类型 //int x; int y = 5; public void eat(); public void travel(); }
多继承实现方式:
修饰符 class ClassName implements Interface1,Interface2{...}
1.接口不可实例化对象
2.接口中所有方法均是抽象方法
3.接口成员均是static final类型
4.接口支持多继承
以上是关于认识Java的主要内容,如果未能解决你的问题,请参考以下文章