Java由来
Java 语言源于 1991 年 4 月,Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的
前身:Oak (得名与Java创始人James Gosling办公室外的一棵橡树),但由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1995年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere"(一次写入,随处运行) 的口号。
main 方法介绍
示例:
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello world"); } }
Java程序的结构由如下三个部分组成:
- 源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
- 类:类中带有一个或多个方法。方法必须在类的内部声明。
- 方法:在方法的花括号中编写方法应该执行的语句。
总结:类存在于源文件里面;方法存在于类中;语句存在于方法中。
注意:在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。
Java程序的运行
先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节
码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。
我们可以用记事本或 idea(集成开发环境)来编写Java源程序,然后使用javac.exe编译器编译源程序,生成xxx.class的字节码文件,语法格式:
javac xxx.java ,最后用java运行字节码文件,语法格式:Java xxx
注意:在运行Java程序前,必须先安装好JDK(Java Development Kit即Java开发工具包),JDK里面就包含了javac和java工具,Java程序最终是在JVM(Java虚拟机)中运行的。
JDK、JRE、JVM之间的关系:
JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译
器javac与自带的调试工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程
序运行的所需环境。
JVM:Java虚拟机,运行Java代码
数据类型和变量
数据类型
在Java中数据类型主要分为两类:基本数据类型和引用数据类型。
基本数据类型
基本数据类型有四类八种:
- 四类:整型、浮点型、字符型以及布尔型
- 八种:
- 它们对应的包装类分别是:
int 的包装类型为 Integer
long 的包装类型为 Long
short 的包装类型为 Short
byte 的包装类型为 Byte
double 的包装类型为 Double
float 的包装类型为 Float
char 的包装类型为 Character
boolean 的包装类型为 Boolean
总结:除了int 和 char 类型的包装类要特殊记忆外,其它六种基本数据类型所对应的包装类都是首字母大写即可。
引用数据类型
引用数据类型有:数组、类、接口、抽象类、自定义类型等
运算符
算术运算符
加减乘除模(+ - * / %)
都是二元运算符,使用时必须要有左右两个操作数
int / int 结果还是int类型,而且会向下取整
做除法和取模时,右操作数不能为0
% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的
两侧操作数类型不一致时,向类型大的提升
增量运算符 += -= *= %=
该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。
int a = 1; a += 2; // 相当于 a = a + 2
注意:只有变量才能使用该运算符,常量不能使用。
自增/自减运算符 ++ –
+是给变量的值+1,–是给变量的值-1。
注意:
如果单独使用,【前置++】和【后置++】没有任何区别
如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式
结束时给变量+1
只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改
关系运算符
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。
注意:当需要多次判断时,不能连着写,比如:3 < a < 5,应该写成:3<a && a<5
逻辑运算符
逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。比较简单简略带过。
移位运算
移位运算符有三个: << >> >>> ,都是二元运算符,且都是按照二进制比特位来运算的。
1、 左移 <<: 最左侧位不要了, 最右侧补 0.
注意:向左移位时,丢弃的是符号位,因此正数左移可能会编程负数
2、 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
3、 无符号右移 >>>: 最右侧位不要了, 最左侧补 0
逻辑控制
这里我们学习了if、if…else、switch语句,还有for、while、do…while循环等。
我们要注意:主要是判断条件,就一定是布尔表达式。
还要注意switch的参数的数据类型有哪些。
switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型
方法
java中把函数叫做方法,它是完成某个功能,模块化的组织代码。
方法的重载与重写
着重强调方法的重载、重写,以及这两者的区别。
重载特点:
方法名相同,参数列表不同(顺序、数据类型、个数),返回值不做要求。
注意:子类也可以重载父类的方法。
重写特点:
方法名相同,参数列表相同(顺序、数据类型、个数),返回值相同(除非可以构成父子类关系)。
注意:
private 修饰的方法不能重写
static 修饰的方法不能重写
被final修饰的方法不能重写
子类重写方法后,访问权限要大于等于父类的访问权限。
区别:
关于递归
一个方法在执行过程中调用自身, 就称为 “递归”。
递归的必要条件:
- 将原问题划分成其子问题,注意:子问题必须要与原问题的解法相同
- 递归出口(设置条件,在合适的位置结束递归,否则会无限递归)
递归的程序的执行过程不太容易理解, 要想理解清楚递归, 必须先理解清楚 “方法的执行过程”, 尤其是 “方法执行结束之后, 回到调用位置继续往下执行”.
数组
定义:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。
数组在java中是引用类型。
注意:数组可以作为参数和返回值:
操作数组的工具类:Arrays