首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
Java语言概要
时间:
2015-09-12 19:03:07
阅读:
236
评论:
0
收藏:
0
[点我收藏+]
标签:
Java把
源代码
(SourceCode)翻译成
字节码
(ByteCode):javac MyClass.java,再在Java虚拟机(JVM)上执行字节码:java MyClass。
Java是基于
面向对象编程
(OOP)的,OOP的三原则是
封装
(Encapsulation)、
继承
(Inheritance)和
多态
(polymorphism),封装是为了捆绑
数据和代码
,继承是为了
层次化分类
,多态是为了
“一个接口,多种方法”
。
在Java文件中,主类的名称(MyClass)和文件的名称(MyClass.java)必须相同,作为程序入口的类必须实现main()方法。
标识符
由字母、数字、下划线_、美元符$组成,数字不能开头。Java的
注释
和C的注释相同,还多了一种文档注释。
Java是
强类型
语言,分为
基本类型
和
对象类型
,
基本类型
有8种,整型有4个:
byte
(8位)、
short
(16位)、
int
(32位)和
long
(64位),浮点型有2个:
float
(32位)和
double
(64位),字符型和布尔型各有1个:
char
(16位)和
boolean
(8位),基本类型是基于面向过程的,无需使用new语句创建,而对象必须使用new语句创建,我们可以把基本类型封装在对象中,这样的对象叫做
基本类型封装器
,基本类型与基本类型封装起之间可以自动进行转换,整型不支持无符号,所有整型都是有符号的,字符型不是基于ASCII而是基于Unicode的,字符型本质就是整型,可以进行整数操作,布尔型只有true和false,布尔型与整型不能相互进行转换,类型转换分为
自动类型转换
和
强制类型转换
,数字型、字符型和布尔型之间不能相互转换,两种类型兼容(同是数字型)可以进行类型转换,自动类型转换也叫
扩宽转换
,强制类型转换也叫
缩小转换
,浮点型转换为整数型时会截去小数部分,表达式中会自动类型提升:byte, short, char -> int -> long -> float -> double。
字面值
(Literal)有整型字面值、浮点型字面值、字符型字面值、布尔型字面值和字符串字面值,前面四个都是基本类型,只有最后一个是对象类型。
变量
在类中叫
实例变量
,块可以嵌套,内部块的变量可以访问外部块的变量,外部块的变量不能访问内部块的变量,内部块的变量不能与外部块的变量同名,但实例变量可以与方法中的变量同名,此时实例变量会被覆盖,可以使用self关键字显式访问。
运算符
分为
算术运算符
、
位运算符
、
布尔运算符
和其他运算符,算术运算符可以作用在数字型和字符型中,此外还有
赋值运算符
、
instanceof
等。
控制语句
分为
条件语句
、
循环语句
和
跳转语句
,在switch语句中,()里的值可以是byte、short、int、char、枚举和
字符串
,case后的值是相应的常量表达式,for语句有"
for-each
"形式:for(type itr-val: collection) {…},对itr-val赋值不会影响collection中的值,break和continue都可以在后面添加
label
,这是针对嵌套循环进行设计的。
数组
是对象类型,需要使用new语句创建数组:type arr-name[] = new type[size],数组的每个元素会自动初始化:0(数字型)(含字符型)、false(布尔型)或null(引用类型),也可以使用{,,}语句创建数组:type arr-name[] = {val1, val2, …, valn},可以创建数组的数组。
字符串
也是对象类型,为
String
类,通常使用""语句创建字符串,String对象是不可变的,修改字符串要么重新创建,要么使用
StringBuffer
类。
Java是基于
类
(Class)的,类是
对象
(Object)的模板,对象是类的实例,类包括
实例变量
和
方法
,实例变量和方法都叫类的
成员
,创建对象必须使用
new
语句,Java的对象引用与C/C++的内存指针本质上是一样的,
对象引用变量
的赋值不是拷贝,方法包括
构造函数
和
finalize()方法
,构造函数用来初始化对象,构造函数的名字和类名相同,并且没有返回类型,其实隐式为该类,finalize()方法在对象销毁前释放某些资源(如关闭文件、断开网络连接等),Java不是在离开块时调用finalize()方法,而是在
垃圾回收
(Garbage Collection)时。
重载
方法的名字相同,但是参数列表(参数的类型,参数的个数,参数的顺序)必须不同,参数的类型不能完全匹配时,允许匹配可以自动类型转换的类型。
static
成员(static实例变量+static方法)本质上就是类的实例变量和方法,不是某个对象的实例变量和方法,可以用类直接访问静态成员,静态方法中只能使用静态实例变量和其他静态方法,静态实例变量可以在声明时初始化,也可以使用
静态代码块
(static {…})进行初始化。
final
静态变量是不可变的,可以在声明时初始化,也可以在构造函数中进行初始化。类可以像块一样嵌套,可以在类中定义类,只能在外部类中实例化内部类,也可以在块中定义类,也只能在块中使用内部类。
Java的
继承
(Inheritance)只支持
单继承
,子类不能访问父类的私有成员,
self
指代的是当前对象,
super
指代的是父类对象,可以使用super访问超类的实例变量和方法(包括构造函数),子类构造函数的第一条语句是调用super()方法,如果没有自动执行超类的默认构造函数,也就是说,Java按照继承顺序调用构造函数。
重写
方法是指子类可以覆盖父类的方法,final变量不能修改,final方法不能重写,final类不能继承。
父类变量
可以引用子类变量,用该父类变量调用某个重写方法时,Java会在运行时根据指向对象的真正类型调用相应的重写方法,这就是
运行时多态
。
抽象类
中包含
抽象方法
,当然也可以实现某些方法,不能实例化抽象类,所以抽象类中不能声明抽象构造函数,静态方法本质上是属于类的,所以抽象类也不能声明抽象静态方法,其实抽象类相对于实现类而言就是父类,所以
抽象变量
也可以像父类变量引用子类变量,
包
(Package)是类的容器,避免不同包的类名相同引发冲突,java文件的第一条语句是
package
语句,如果没有,会把类放入
默认包
中,Java使用
文件系统目录
存储包,根据目录的层级结构就可以创建层次化的包了,Java首先在
当前工作目录
中查找包,找不到的话再从
CLASSPATH环境变量
中的目录中查找,还找不到的话再看看javac/java指令中的
-classpath选项
指定的目录中有没有,如果还没有才会报错。
完全限定名
包括
包名
和
类名
,使用
import
语句导入相关包或类,可以省略包名或类名,Java的所有标准类都存储在
java包
中,Java编译器会自动导入
java.lang子包
:import java.lang.*。类成员的
访问修饰符
有public、protected和private,还有一种是默认的(无)(即无访问修饰符),与前三种都不同,
public
成员在包内、包外都可见,
(无)
只能在包内可见,
protected
在public与(无)之间,它比(无)多了一个“在其他包的子类中也可见”,
private
只能在类中可见。类和接口的访问控制只有两种:public和(无),规则跟类成员的public和(无)相同。
与单个继承不同,一个类可以实现多个
接口
(Interface)。接口的所有成员都被隐式地声明为
public
,接口中的变量都是被隐式声明为
final
和
static
,而接口中的方法都只是
抽象方法
(只有;没有块),实现接口的类要么实现所有的接口方法,要么声明为abstract,当然实现接口的方法必须被声明为public。可以使用
接口变量
引用实现接口类的实例,接口可以像类一样
继承
,子接口可以扩展父接口,也可以像类一样
嵌套
,在接口中定义接口,内部接口的访问控制规则与类成员的相同,有public、protected、private和(无)。
所谓的
异常
(Exception)就是
运行时错误
,可以在
try
块中抛出异常(
throw
),也可以让方法抛出异常(
throws
),可以捕获异常(
catch
)并进行相应的处理,也可以传递异常给外层try块或外部方法,让它们来进行处理,不论是否发生异常,都要执行
finally
块,finally块的功能类似finalize()方法,用来释放某些资源(如关闭文件、断开网络连接等),如果不想使用finally块,可以使用
带资源的try语句
。
Java语言概要
标签:
原文地址:http://www.cnblogs.com/qushan/p/4803360.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!