目录
Java语言概述
这一部分主要讲讲Java的一些性质、常用的平台及其跨平台运行的原理。
Java的性质
- 简单的。Java的风格类似C++,但摒弃了C++中容易引发程序错误的一些特性,如指针、结构、内存管理等,Java提供了丰富的类库和各种框架,更有利于开发者开发。
- 面向对象的。Java的核心是类和对象,它支持继承、重载、多态等面向对象的特性。我们熟知的python也是面向对象的编程语言。
- 可靠的。Java的类型检查比C++严格,可发现数组和字符串访问的越界,Java提供了异常处理机制。Java自己负责内存管理,提供了垃圾内存回收机制,可以有效避免内存泄漏问题。
- 与平台无关的。Java源程序(.java)被编译成一种与平台无关的字节码格式(.class),这是一种中间代码。然后由Java虚拟机解释执行。只要安装有Java虚拟机的机器都能执行这种中间代码。
- 安全的。Java语言避免了非法内存操作;Java有其安全体系架构,从而确保Java代码的安全性。
- 分布式的。如:多台机器共同分担流量;多台机器分管数据库和功能;多台机器分管不同功能;同一功能由多台机器分担。
- 支持多线程的。
- 支持网络编程的。
三种平台
- Java SE:Java平台的标准版。主要用于桌面应用软件的编程。
- Java ME:Java平台的精简版。主要应用于嵌入式系统开发。
- Java EE:Java平台的企业版。主要用于分布式的网络程序的开发。
跨平台原理
- 字节码:与平台无关的中间代码。java源代码编译后生成与平台无关的中间代码文件,后缀为.class。
- JVM:Java虚拟机。可以把Java的字节码看成是JVM上所运行的机器码。理论上平台存在定制的Java虚拟机(Java解释器程序),Java程序就可以运行。
Java语言开发环境
这部分主要讲讲Java开发环境的相关概念以及集成开发环境(IDE)的选择。
相关概念
- JDK(Java Develop Kit),Java开发工具包。JDK 是一个简单的命令行工具包,主要包括:编译运行Java程序的编译器(javac.exe)和解释器(java.exe)、Java系统类库、JVM。
- JRE(Java Runtime Environment),Java运行环境。通常已包含在JDK中,主要包括:Java系统类库、JVM。注意:JRE是不能编译Java源程序的。
Java开发工具的安装
以下教程选其中一个看就行,如果你的IDE是IDEA就选第一个,如果是Eclipse就选第二个。
- Java和IDEA安装:Java和IDEA安装视频教程
- JDK和Eclipse安装:JDK和Eclipse安装视频教程
Java程序的编译与运行
- 编写源程序。Java程序的编辑可以使用任何一个文本编辑器,如:UltraEdit、记事本等。
- 编译源程序。可以通过命令行调用javac.exe来实现。
- 运行或调试程序。可以通过命令行调用java.exe来实现。
基本注意事项
- java源文件的扩展名必须是.java 。
- 所有的java程序都是由一个或多个类组成。
- 一个java源文件中最多只能有一个public类,且文件名必须与该public类名相同。
- 若没有public类,则源文件名可以任意。
- main方法是程序执行的入口,每个java应用程序必须有一个main方法。
- 包含main方法的类即为主类。
Java语言基础
这部分主要讲讲Java语言的数据类型、关键字与标识符、常量变量、数据类型转换、常见运算符等。
数据类型
基本数据类型
- 整型:byte(字节型)、short(短整型)、int(整型)、long(长整型)
- 浮点型:float(单精度浮点)、double(双精度浮点)
- 逻辑型:boolean
- 字符型:char
Java默认所有的整数值是int类型,在数值后加l或L表示该数值是long类型。Java默认所有的浮点值是double类型,在数值后加f或F表示该数值是float类型。
逻辑型(布尔型)boolean只有true(“真”)和false(“假”)两个取值。true和false不能转换成数值表示形式,占1个字节。
字符型char采用的是Unicode字符集编码方法,在内存中占2个字节(注意这里和C语言的char占用内存不同)。字符声明只能表示单个字符,用单引号。
引用数据类型
引用数据类型在内存中存放的是指向该数据块的首地址,不是数据值本身。(引用数据类型后文会细讲)
- 类
- 数组
- 接口
关键字与标识符
- 关键字:Java语言中预定义的保留字,具有特定的含义和用途。像
private
,protected
,public
,super
,this
,boolean
,byte
,char
,double
,float
,int
,long
,short
这些都是关键字。关键字很多,不用全部都记住,记住一些常用的就行,其他的遇到了再查资料。 - 标识符:程序员定义的名称,用于标识变量、方法、类、接口、包等。标识符必须遵循Java的命名规则:
- 可以由字母、数字、下划线(_)、美元符号($)组合而成.
- 必须以字母、下划线或美元符号开头,不能以数字开头。
- 关键字不能当标识符使用。
- 区分大小写。
- 驼峰命名法:
CamelCase
类和接口用这种形式;camelCase
变量和方法用这种形式。
常量与变量
常量
- 数值常量:按其数据类型可分为整型常量、浮点型常量、字符型常量、字符串常量与布尔型常量等5种类型。
- final常量:java中
final
关键字用于声明常量,即值在初始化后不能改变的变量。例如:final int MAX = 10;
、final float PI = 3.14f;
其中MAX
和PI
就是final常量。
变量
Java变量声明、初始化、赋值的操作和C语言很像,下面直接举例说明:
public class Example
{
public static void main(String args[])
{
byte a=10;
short b=20;
int c=0x30;
long d=1234567890123L;
byte e=129;
float ff=1.234f;
double dd=34.56d;
char c1='a';
char c2='\141';
char c3='\u0061';
char c4='\\';
boolean f1=true
}
}
Java 在程序中可以随时定义变量,不必集中在执行语句之前。
数据类型转换
- 自动类型转换,也称为加宽转换。将具有较少位数的数据类型转换为具有较多位数的数据类型,原则是不会损失精度或溢出。
- 强制类型转换,也称为变窄转换。将位数较多的数据类型转换为位数较少的数据类型,其语法是“(欲转换的数据类型)变量名”:如
int temp = (int)123.45;
- 字符串转换成数值型数据。通过
Float.parseFloat()
方法实现 - 数值型数据转换成字符串。在Java语言中,字符串可用加号“+”来实现连接操作。
// 字符串与数值数据互相转换操作
String myNumber = "123.45";
float myNum = Float.parseFloat(myNumber);
System.out.println(myNum); // 输出为整型的:123
int temp = 123;
String myString1 = "" + temp;
String myString2 = "my string is" + temp;
System.out.println(myString1); // 输出为字符串的:123
System.out.println(myString2); // 输出为字符串的:my string is123
常见运算符
- 算术运算符:
+
(加)、-
(减)、*
(乘)、/
(除)、%
(取模)、++
(自增)、--
(自减) - 赋值运算符:
=
(赋值)、+=
(加等于)、-=
(减等于)、*=
(乘等于)、/=
(除等于)、%=
(取模等于) - 关系运算符:
==
(等于)、!=
(不等于)、>
(大于)、<
(小于)、>=
(大于等于)、<=
(小于等于) - 逻辑运算符:
&&
(逻辑与)、||
(逻辑或)、!
(逻辑非)、&
(逻辑与)、|
(逻辑或) - 位运算符:
&
(按位与)、|
(按位或)、^
(按位异或)、~
(按位取反)、<<
(左移)、>>
(右移)、>>>
(无符号右移)
关于逻辑运算符的&&
(逻辑与)、||
(逻辑或)、&
(逻辑与)、|
(逻辑或),其中&&
和||
属于短路逻辑运算符。 - 短路逻辑与
&&
,如果第一个操作数为false,则不会计算第二个操作数,结果直接为false。 - 短路逻辑或
||
,如果第一个操作数为true,则不会计算第二个操作数,结果直接为true。 &
和|
不会短路,即不管第一个操作数的值如何,第二个操作数都会被计算。
Java中,浮点数之间不能用==
做比较,C语言也是如此。可参考:Java比较两个浮点数