目录
初识Java
Java之父——James Gosling(詹姆斯·高斯林)。
Java前身:Oak(得名于Java创始人James Gosling办公室外的一棵橡树)。随着互联网的发展,Sun公司于1995年5月以Java的名称正式发布,并提出"Write once,Run anywhere"(一次编译,到处运行)的口号。
Java语言特性
- 简单性。它是C++的一个“纯净版本”,没有头文件、指针、结构等。
- 面向对象。在Java世界中,一切皆对象。所谓面向对象,就是依靠对象之间的交互来完成事情,首先把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个对象在整个问题解决的步骤中的属性和行为。面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中按顺序调用函数。
- 健壮性
- 安全性
- 体系结构中立。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态的翻译成本地机器代码。("Write once,Run anywhere")
Java程序
-
main方法示例
一个完整的Java程序结构,由三部分组成:
1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件、小程序或只会有一个类。类的内容包含在花括号里面。
2.类:类中带有一个或多个方法,方法必须在类的内部声明。
3.方法:在方法的花括号中编写方法应该执行的语句。
总结:类存在于源文件里面,方法存在于类中,语句存在于方法中。
在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。
-
运行Java程序
1.使用记事本或IDEA(集成开发环境)编写Java源程序
2.使用javac.exe编译器编译JAVA源程序,生成xxx.class的字节码文件
3.使用java运行xxx.class字节码文件
JDK、JRE、JVM的关系:
1.JDK:java开发工具包,提供给Java程序员使用,包含JRE和Java开发工具(编译器javac.exe、打包工具jar.exe等)
2.JRE:java运行时环境,包含Java虚拟机(JVM)、Java所需的核心类库
3.JVM:java虚拟机,是Java能跨平台的核心机制,运行Java代码
数据类型和变量
数据类型
Java中数据类型主要分为两类:
-
基本数据类型
基本数据类型有四类:整形、浮点型、字符型、布尔型
数据类型(关键字) | 内存占用 | 范围 |
字节型(byte) | 1字节 | -2^7~2^7-1 |
短整型(short) | 2字节 | -2^15~2^15-1 |
整形(int) | 4字节 | -2^31~2^31-1 |
长整型(long) | 8字节 | -2^63~2^63-1 |
单精度浮点数(float) | 4字节 | |
多精度浮点数(double) | 8字节 | |
字符型(char) | 2字节 | 0~2^16-1 |
布尔型(boolean) | 没有明确规定 | true false |
-
引用数据类型
数组、类、接口、抽象类、自定义类型
变量
在Java中,对于经常改变的内容,称为变量,而数据类型就是用来定义不同种类变量的。
运算符
对操作数进行操作时的符号
算术运算符
1.基本四则运算符:加减乘除模(+ - * / %)
2.增量运算符:(+= -= *= %=),进行自动类型转换
3.自增(++)/自减(--)运算符
如果混合使用,前置++:先加1,然后使用变量加1后的值,后置++:先使用变量原来的值,表达式结束后给变量加1
public static void main(String[] args) {
int a = 1;
a++;
System.out.println(a); // 2
System.out.println(a++); // 2
System.out.println(a); // 3
}
public static void main(String[] args) {
int b = 1;
++b;
System.out.println(b); // 2
System.out.println(++b); // 3
System.out.println(b); // 3
}
关系运算符
==、!=、<、>、>=、<=,其计算结果是true或false。(2<a<3 x 2<a && a>3 √)
逻辑运算符
逻辑与 && | 表达式1 && 表达式2 :如果表达式1为假,就不执行表达式2(两个表达式为真,结果才为真) |
逻辑或 || | 表达式1 || 表达式2 :如果表达式1为真,就不执行表达式2(两个表达式为假,结果才为假) |
逻辑非 ! | !表达式 :真变假,假变真 |
注:&和| 如果表达式结果为boolean时,也表示逻辑运算,但与&&和||相比,不支持短路求值
public static void main(String[] args) {
System.out.println(10<20 || 10/0==0);//true
System.out.println(10<20 | 10/0==0);//抛出异常
}
位运算符
&、|、~、^,除~是一元运算符外,其余都是二元运算符
按位与 & | 如果两个二进制位都是1,则结果为1,否则结果为0 (10&20 //0) |
按位或 | | 如果两个二进制位都是0,则结果为0,否则结果为1 (10|20 //30) |
按位取反 ~ | 若该位为1,则转为0;若该位为0,则转为1 (~n = -(n+1)) |
按位异或 ^ | 如果两个二进制位相同,则结果为0,否则结果为1 (0异或任何数=任何数,1异或任何数=任何数取反,任何数异或自己 = 0) |
移位运算
左移 << | 左移N位,相当于原数字*2^N(运行结果按16进制打印) |
右移 >> | 右移N位,相当于原数字/2^N |
无符号右移 >>> | 最右侧不要了,最左侧补0 |
条件运算符
表达式1 ? 表达式2 :表达式3
boolean a = (true==true)?(true==true)?false:true:false; // false
逻辑控制
顺序结构、分支结构、循环结构
不能做Switch的参数的数据类型为:long float double boolean,Switch的括号内只能是以下类型的表达式:char byte short int String常量串,枚举类型
方法的使用
Java中把函数叫做方法,存在的意义:
1.能够模块化的组织代码
2.做到代码被重复使用
3.让代码更好理解,更简单
4.可以直接调用现有方法
方法的调用过程
调用方法 ——> 传递参数 ——> 找到方法地址 ——> 执行被调用方法的方法体 ——> 被调方法结束返回 ——> 回到主调方法继续往下执行
方法中形参和实参的关系
Java中方法的形参相当于数学函数中的自变量,是方法在定义时需要借助的一个变量,用来保存方法在调用时传递的值。
注:实参的值永远是拷贝到形参中的 ,它们本质上是两个实体
方法重载
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。
1.方法名相同
2.参数列表不同(参数的个数不同、参数类型不同、类型的次序必须不同)
3.返回值类型不做要求
方法重写
1.方法名相同
2.参数列表相同
3.返回值相同
private、static、final修饰的方法不能重写,子类重写方法后,访问权限要大于等于父类的访问权限。