基础知识
1、什么是跨平台性?原理是什么?JVM
不同的系统都可以运行。系统安装虚拟机。。
我的总结:Java 程序之所以能够实现跨平台运行,是因为它根本就不直接在任何底层
平台上运行,有虚拟机调用。
2、Jre 和Jdk 的区别?
JDK;包含虚拟机和类库,也包含JRE
JRE:(Java Runtime Environment),java 运行环境
简单而言:使用JDK 开发完成的java 程序,交给JRE 去运行。
3、java 虚拟机JVM
Java Virtual Machine ,简称JVM; 读取字节码文件。
Java 虚拟机是不跨平台的.
4.临时配置path.  Set path =d:\ jdk\bin只在当前dos下有效。
清空环境变量(dos)set path=什么都不写
虚拟机在启动时先找classpath,在找当前目录。
Set classpath=c:\;
Set classpath=c:\
加分号时,如果classpath找不到,还到当前目录下找。
不加分好,只在classpath下找,最好不要加分号。
多路径配置。
Set classpath = c:\; d:\  
Set classpath= .;c:\; d:\  点表示当前目录。
Path与classpath的区别:
Path先找当前。在找path
Classpath先找classpath,再找当前。
5、Java 程序运行机制
编译: javac 文件名.文件后缀名
总结:Java 程序的组成:Java 源文件,字节码文件。
6、Java 语法格式
main 方法的作用:
程序的入口,保证程序的独立运行,被JVM 调用
7、代码注释:单行//,多行/* */,文档注释/** */
.文档注释/** */
总结:多行和文档注释都不能嵌套使用。
8、Java 中的标识符
命名规则: 26个字母大小写,0-9。
(1) 由字母、数字、下划线、$组成,不能以数字开头
注意:此处的字母还可以是中文,日文等;  
(3) 不得使用java 中的关键字和保留字,main。
9、java 中的常量和变量
变量的概念:
就是将不确定的数据进行存储。
常量:不能改变的数值。整数,小数,boolean,字符,字符串,null.
字符:字母,数字,符号。用单引号标识。
八进制:用0开头表示。
十六进制:用0x开头表示。
负数的二进制:如:-6,6的二进制取反加+1。
10、Java 成员变量和局部变量
局部:定义在方法上或方法中,需要初始化
成员:定义在类中,有默认的初始化值。 
11、基本数据类型
Java 语言的基本数据类型总共有8 种:
byte :1个字节,short:2个字节 ,int:4个字节,long:8个字节,float:4个字节,double:8个字节,char:2个字节
Boolean:1个字节,Float:单精度:小数点后8位,小数点后11位
Float=2.3:这行代码有问题,因为小数默认的时double。可以进行标识,float=2.3f,  还有float = 1/3;右边的结果是int型的。
char ch =’a’; ch+1=98 在运算的时候ch占2个八位,这时候就要类型提升为int型,就体现为了97.  ‘1’的十进制是46.  char类型可以参与运算,因为它的字符在ASCII都有对应的数字。
12、基本数据类型转换之向上转型和向下转换
向上转换: 转换时遵循以下原则:
容量小的类型可自动转换为容量大的数据类型;
byte,short,char → int → long → float → double
byte,short,char 之间不会相互转换,他们在计算时首先会转换为int 类型。
boolean 类型是不可以转换为其他基本数据类型。
小转大,自动!自动类型转换(也叫隐式类型转换)
大转小,强转!强制类型转换(也叫显式类型转换)
13、Java 的运算符
运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种:
算术运算符(+ 、— 、* 、/ 、%)
赋值运算符(= 、+=、-=、*=、/=,、%=)
关系运算符(>、>=、<、<=、!=)
条件运算符(&&、||、!&、|、^)
位运算符(&、|、^、~、>>、<<、<<<、>>>)
int a = -3;
       a = a %15;
       左边是负数,等于左边
       int a = 16;
       a = a % -3;
       右边是负数,不用管负号
 14,.赋值运算符
       x+=4:把左右两边的和赋给左边相当于x = x +4             
       short x = 4;/short 两个八位
       x = x +4;//先做加法运算,在做赋值那算,分两步,
       short x = 4;            x+=4;//只做一次运算,就是讲左右两边倒和赋值给左边。   
上面两个异同;x = x + 4;编译失败,因为x会被提升为int类型,无法赋值给short类型;x+=4;编译通过,因为+=运算符在给x赋值时,自动完成了强制转换。      
15 转义字符;通过反斜线来转变字母的含义
\n;换行
\b;推格。相当于backspace
\r;按下回车键。windows系统中,回车符由两个字符来表示\r\n
\t;制表符。相当于Tab键
System.out.println("\"java\"");  :打印双引号java,转移双引号,反斜杠必须在被转移字母的前面
System.out.println("\\java\\");  ;打印\java\
char ='你'  ;char类型是两个字节,汉字也是两个字节
16逻辑运算符
作用:用于连接不boolean类型的表达式
&  AND(与) 
false&ture   结果;false
false&false  结果;false
ture&ture    结果;ture
如何表达3<x<6  3<x&x<6 x>3&x<6
只要有一个位false,那么结果为false
| or(或)
有一个为真结果为真。
^ 异或
true^false = true
false^flase=false
true^true=false
两边相同为false,两边不同为真。
&& AND(短路)
int a=2;
a>3&&a<6,与单与的区别是:左边为假,右边不运算,&:左边无论真假,右边都要运算。
||:当左边为真时,右边不运算。同上。
17位运算 的算术效率最高。
>>:右移,移除有效位。相当于除以2的位数次幂。
<<:左移,乘以2d位数次幂。
>>>:无符号右移,没有无符号左移!最高位补0
~:反码。
&:6&2:0&1=0,0&0=0,1&1=1;
|: 6|2:0|1=1,0|0=0
^(异或):1^1=0,1^0=1,0^0=0;
18、三目运算符 
“三目运算符”,语法格式:
x ? y : z;
其中x 为boolean 类型表达式,先计算x 的值,若为true,则整个三目运算符的结果是表达式y 的值,否则就是z 的值。条件:x必须有结果。
19、程序流程控制
判断,选择,循环。If,switch,while,for
if 语句:
在fi,else fi,else只要有一个满足条件就结束。
switch 控制语句
 int a=4;
              switch(a){
              case 1:
                     System.out.println("a");
                     break;
              default:
                     System.out.println("b");
              case 2:
                     System.out.println("c");
                     break;
              }}}
结果:b c
如果遇不到要的结果,执行default,还没有就继续往下执行,知道遇到break;
注意:
(1)case 之间与default 没有顺序。先执行第一个case,都没有匹配的case ,再执行default。
如果匹配的case 或者default 没有对应的break,那么程序会从第一次匹配的case 语句开始
继续向下执行,运行可以执行的语句,直到遇到break 或者switch 结束为止。
(2)Swtich结束的方法:1.遇到break,2.遇到大括号
(3)switch 语句只能使用byte、char、short、int 四种基本类型以及它们的包装类和枚举,只有default放在最后时,才可以省略到break.
20、三大循环结构:
用于处理需要重复执行的操作;
根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;
while:事先不需要知道循环执行多少次;
do while:同上,只是至少要执行一次(先做,后判断);
for:需要知道循环次数;  
总结:do while 特点是无论条件是否满足,循环体至少被执行一次。  
              int x =0;
              do{
                     System.out.println(x);
                     x++;                    
              }
              while(x<10);//别忘了分号
备注:
1, for 里面的3 个表达式运行的顺序,初始化表达式只读一次。
2, while 与for 可以互换,区别在于for 为了循环而定义的变量在for 循环结束就在内存中释放。而while 循环使用的变量在循环结束后还可以继续使用。可以说while没有释放资源,但是for循环中却一直开辟空间。
3, 最简单无限循环格式:while(true) , for(;;) 
}
21、流程控制   
break:终止该层循环; 应用于循环和判断
continue:跳过该层循环,仅仅应用于循环。
注:
①:若这两个语句离开应用范围,存在是没有意义的。
②:这个两个语句后面都不能有语句,因为执行不到。
③:continue 语句是跳过本次循环,继续下次循环。
④:标签的出现,可以让这两个语句作用于指定的循环。 
方法与数组 
参数列表(参数的类型,参数的个数,参数的顺序)  
1、方法特点
它可以实现独立的功能;
必须定义在类里面;
它只有被调用才会执行;
它可以被重复使用;
方法结束后方法里的对象失去引用;
2,如何定义方法:
1 明确该功能运算后的结果.明确返回值类型;
2 明确在实现该功能过程中是否有未知内容参与运算,确定参数列表;  
3、什么是方法的重载(Overload)?
概念:同名,参数列表不同。与返回值无关。 
4、数组特点:
有索引,元素类型相同,长度一旦固定,不可改变。  
5、一维数组的声明与初始化:  
静态初始化:int arr[] = {1,l};
动态初始化:int arr[] = new int[2]; arr[1]=0;arr[2]=1;
6、数组的使用:
判断数组是否重复:循环嵌套,定住一个与所有的比较
求最大值: 用max记录住最大的那个。冒泡排序完了,获取最后一个。
冒泡法排序:相邻比较,交换位置。
选择排序:定住一个,与所有的比较。
折半查找:数组要先排序。
7、二维数组:
二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组),
可以看做是一张表格。
初始化:
动态初始化
int[ ][ ] arr = new int[3][2];
定义了一个二维数组,其中有3 个一维数组,每一个一维数组中有2 个元素
静态初始化
int[ ][ ] arr = new int[][]{{1,2},{3,4},{5,6}};
int[ ][ ] arr = {{1,2},{3,4},{5,6}};  
int默认值是0 boolean默认是false,double默认值是0.0,float默认值0.0,字符串null,char默认值是空格,