一、 Java语言的特点:
1简单的、2面向对象的、3分布式的、4解释的、5健壮的、6安全的、7结构中立的、8可移植的、10高效的、11多线程的、12动态的
二、 1、Java的运行机制:
先编译后解释执行
如下图所示:
2、JDK JRE JVM:
JDK:开发Java的应用程序包,包括JRE、Java工具和Java类库
JRE:Java运行时环境,Java运行的必须条件
JVM:Java虚拟机,实现Java跨平台的转换器
三、 JDK配置:
安装完JDK之后,需要配置才可以使用:
计算机-----》属性-----》高级系统设置-----》高级-----》环境变量----》系统变量-----》path----》双击打开,在变量值后面添加; C:\Program Files\Java\jdk1.6.0_10\bin----》确定即可
四、 Java两大核心机制:
1、Java虚拟机(JVM)
2、GC(垃圾回收机制):
Java不需要程序员回收无用内存,垃圾回收在 Java 程序运行过程中自动进行,程序员无法精确控制和干预。
五、Java中的注释和javadoc命令
注释:用来说明某段代码的作用,某个类的用途,某个方法的功能…….
Java中注释分为三类:单行注释,多行注释,文本注释。
单行注释: //注释内容
多行注释: /*
注释内容
……
注释内容
*/
文档注释: /**
*注释内容
* ……
*注释内容
*/
标识符命名规则:
Java语言中标示符必须以字母、下划线(_)、美元符号($)开头,后面可以跟上任意数目的字母、数字、下划线(_)、美元符号($)。此处的字母不仅仅是26个英文字母,还可以是中文字符、日文字符…….
注意:标示符不能包括空格,不能使用java的关键字和保留字和直接量,标示符的长度不受限制。
由于Java采用的Unicode编码,因此Java的标示符可以使用Unicode能够表示的任意字符。Java语言严格区分大小写,因此Abc和abc是不用的标示符。
直接量 3个:
Java中还有三个直接量也不能作为标示符: true false null
六、基本数据类型:
Java语言是强类型,每一个表达式或者变量都有一个在编译时就确定好了的类型,所有变量需要先声明后使用。
Java中数据类型包括 基本数据类型和 引用数据类型(复杂数据类型)两大类
七、数据类型转换:
Java八种基本数据类型有两种转换方式:自动类型转换、强制类型转换
boolean类型不可以和其他任何类型相互转换。
强制类转换:
有时候需要将大类型的数据转换成小类型使用。Eg:需要将double类型的数据转换成int类型使用,此时可能损失精度,必须使用强制类型转换。注意,强制类型转换不可以乱用。
例如:
doublea = 1.23;
intb = (int)a;
八、运算符:
1.算术运算符:
+加
-减
*乘
/除
%取模(取余数)
2.自增自减:
++自增
--自减
举例:
int i = 5;
intj = i++;// j=i i=i+1
System.out.println("i="+i+" j="+j);// i=6 j=5
inti = 5;
intj = ++i;// i=i+1 j=i
System.out.println("i="+i+" j="+j);// i=6 j=6
3.关系运算符:
> >= < <= == !=
大于 大于等于 小于 小于等于 等于 不等
4.赋值运算符:=
注意将 = 和 ==区分开来。= 是赋值 == 是判断是否相等
九、程序的三种结构:
顺序结构:自上而下的逐行执行代码。
分之结构:根据逻辑判断,有选择的执行其中某部分代码。
循环结构:根据逻辑判断,重复执行某个代码块。
1. 顺序结构:代码块中没有用if、switch、for、while等的,都是顺序结构
2.分支结构:if单分支
语法:
if(表达式){
代码块;
}
二路分支(双分支)
语法:
if(表达式){
代码块1;
}else{
代码块2;
}
多路分支:
语法:
if(表达式1){
代码块1;
}elseif(表达式2){
代码块2;
}else if(表达式3){
代码块3;
}
…….
…….//中间可以有n个 else if
……..
else{//最后这个else可有可无
代码块n;
}
Switch分支:
Switch是多分支语句,表达式如下:
switch(表达式){
case 值1:代码块1;
break; //break不是必须的,根据情况而定
case 值2:代码块2;
break;
……
…...
……
default:代码块n; //default可有可无
}
3.循环结构:
while循环:
语法:
while(循环条件){
代码块/循环体;
}
do…while循环:
语法:
do{
代码块/循环体;
}while(循环条件);
for循环:
语法:
for(表达式1;表达式2;表达式3){
循环体;
}
说明:
表达式1:初始化变量
表达式2:循环条件
表达式3:循环增量
案例三: 输出1900--2015之间所有的闰年
publicclass Test1{
public static void main(String[] args){
for(inti=1900;i<=2015;i++){
if((i%4==0&&i%100!=0)||(i%400==0)){
System.out.println(i);
}
}
}
}
循环的嵌套:
循环之间可以相互嵌套,比如九九乘法表的打印,星号金字塔的打印。
例子:星号金字塔
public class Test1{
publicstatic void main(String[] args){
for(inti=1;i<=5;i++){
for(intj=1;j<=5-i;j++){
System.out.print("");
}
·
for(int k=1;k<=2*i-1;k++){
System.out.print("*");
}
System.out.println();
}
}
}
循环的控制 break和continue:
break语句除了可以用在switch语句中,还可以用在循环体中。在循环体中遇见break语句,立即结束循环,跳到循环外,执行循环结构后面的语句。break语句用于结束整个循环。
public static void main(String[] args){
for(inti=1;i<=5;i++){
if(i==3){
break;
}
System.out.println(i);
}
}
}
结果1,2
continue语句用于结束本次循环,即在循环体中遇见continue语句,则循环体中continue语句后面的语句不会执行,接着进行下一次循环的判定。
public class Test1{
public staticvoid main(String[] args){
for(inti=1;i<=5;i++){
if(i==3){
continue;
}
System.out.println(i);
}
}
}
结果:1,2,4,5
十、数组:
数组的定义:类型[] 数组名;//常用 int[]a; double[] b;char[] c
类型 数组名[];// int a[](常用)
1.一维数组
int[] a = {1,2,3,4,5};
2. 多维数组
int[][] a;
a = new int[2][3];//2代表a中有两个一维数组 3代表一维数组中有3个值
数组的初始化:
静态:
动态:
int[] a = new int[5];
3.访问数组元素:
下标的理解:
数组中每个元素都有一个下标,下标从0开始:访问数组元素可以根据数组下标。
4.数组的应用:
个人认为,数组应用中最经典的是冒泡排序,我列举以下两个案例(从大到小和从小到大)
从大到小:(标红为核心重点)
public class Test1{
publicstatic void main(String[] args){
int[]a = {55,23,89,64,85};
//从大到小 冒泡排序
for(int i = 0;i<a.length-1;i++){
for(intj=0;j<a.length-1;j++){
if(a[j]<a[j+1]){
//交换
int x= a[j];
a[j] =a[j+1];
a[j+1]= x;
}
}
}
//输出数组
for(inti=0;i<=a.length-1;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
}
从小到大:
public class Test1{
publicstatic void main(String[] args){
int[]a = {55,23,89,64,85};
//从小到大 冒泡排序
for(int i = 0;i<a.length-1;i++){
for(intj=0;j<a.length-1;j++){
if(a[j]>a[j+1]){
//交换
int x= a[j];
a[j] =a[j+1];
a[j+1]= x;
}
}
}
//输出数组
for(inti=0;i<=a.length-1;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
}
5.在数组中有一个重要的概念,栈和堆:
栈和堆是分析数组内存的重要概念以下图为例