java语言的三种技术架构
JAVAEE (J2EE) 企业版 —主要对于Web应用程序开发
JAVASE (J2SE) 标准版 —完成一些桌面应用程序开发
JAVAME (J2ME) 小型版 —开发电子产品和嵌入式设备
JAVA 虚拟机( JVM___ Java Virtual Machine)
运行输入:
cmd :进入DOS命令行
cd\ :进入C盘根目录
md : 创建目录
dir :列出当前目录下的所有文件及文件夹
rd : 删除目录
cd : 进入指定目录
cd/: 退回到根目录
del : 删除文件
exit: 退出DOS命令行
set : 临时查看编辑环境变量配置
set classpath=D:\肖海波暑假重要文件\java code ——类环境变量(classpath)
还原清理 set classpath= (等号后为空,按回车确定)
set classpath=C:\; 后有一分号!如果目标c盘下没有继续在当前目录下查找
set classpath= . ;c:\;d:\ ------ 点;点代表当前目录
javac :编译
java : 运行
配置环境变量 :我的电脑属性--高级-环境变量--系统变量(path)内加入地址。
HELLO world!
class hello
{
public static void main(String[] args)
{
System.out.println(“hello world!”);
}
}
变量 整形: byte short int long ,浮点型:float double ,float a=2.3f; 字符:char
布尔量:boolean bo = true; boolean bo1= false;
【逻辑运算符:】
&:‘与’运算,有假必假
&&:‘短路’ a>1 && a<7 左边为假右边不运算,直接=false (可提高效率)
|: ‘或’有真必真
||: 左边为真 右边不运算,直接得=true
! : ‘非’运算
^ : ‘异或’ 相同为false 不同为ture
~ : 反码
【二进制移动—位运算】
<< :左移 3<<2 = 12 ——》3*2*2=12
>>: 右移 3>>1 = 1 ——》3/2 = 1
>>> n : 右移n位,左边首部不管正负与否都补 0 ;
小结:
>>:最高位为0,右移后,用0补空位、
最高位为1 ,右移后,用1补空位。
>>> :无论最高位是什么,右移后,都用0补
【算术运算符】
+ ,- , * , % , ++ , - -
//注意: short a=3;
语句1: ( a+=2; )与 语句2:( a=a+2; )
不等同! 语句1可以通过, 语句2编译不通过,error:类型问题,可能损失精度
【3元运算符】
(条件表达式)? 语句1: 语句2 ; //******若为真执行1,若为假执行2。
【3种调换值方法】
容易阅读 大数字相加可能超出范围 位运算不超范围,可读性差
int a = 2, b = 5; int a = 2,b = 5; int a = 2 ,b = 5 ;
int temp; a=a+b; a=a^b;
temp=a; b=a-b; b=a^b; // a=(a^b)^b = a
a=b; a=a-b; a=a^b // a=(a^b)^a = b
b=temp;
结果:a=5,b=2 a=5, b=2 a=5 , b = 2
【if语句】(判断)
if (条件表达式) // if else 简写结构:变量=(条件表达式)? 语句1:语句2;
{ // 三元运算符 好处:可以简化if else 代码
语句1; 弊端:因是一运算符,所以运算完必须有一结果
}
else
{
语句2;
}
if (条件表达式1) // 内多层 else if 结构,顺序执行下去遇到第一个表达式为真,则执行其后的语句,并退出整个if else 结构。
{
}
else if (条件表达式2)
else if(条件表达式3)
……
……
……
else
{
}
if ( 条件表达式1)
{
语句1;
}
if ()
{ //—————— 顺序执行
语句2;
}
if ()
……
else
{
}
【switch语句】
switch (表达式 )
{
case 取值1:执行语句1 ;break;
case 取值2:执行语句2 ;break;
……
default :
执行语句 n ; break; // break 也可以不写。
}
【switch语句特点】
1: switch语句选择的类型只有4种:byte,short,int ,char;
2: case之间与default没有顺序。先执行第一个case,没有匹配的case执行default,default也可以放在case前;
3:结束switch语句的2种情况:遇到break ,执行到结尾“}”
4 :如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行执行的语句,直到遇到break或switch结尾结束;
【switch与if场景选用方案】
1 如果判断的具体数值不多,而又符合byte,short,int,char这四种类型,建议使用switch,因为效率稍高。
2 其他情况:对区间判断,对boolean类型判断,使用if,if的使用范围更广。
【循环结构】
while ( 条件表达式)
{
循环体;
}
do
{
循环体;
}
while( 条件表达式);
【for循环】
如果变量只用来作为循环体的增量 用for循环语句,因为它初始化变量在内部,循环结束时将释放变量在内存中所占用的空间,节省内存!
小规律:1;如果尖朝下,内循环初始化 用例(y=x ; y<5 ; ;)
2;如果尖朝上,内循环条件 用例(y=0;y<x ; ;) 来小于外部
【break与continue】
Break语句 ,运用范围:选择结构和循环结构; // 其他范围无效
Continue 语句, 运用范围:运用于循环结构; //继续下一次循环
【标识符:】
n : for ( ; ; ; ) // n代表外循环,s代表内循环
{ 如 有语句 break n ; 表示退出外循环
s : for ( ; ; ; )
{
}
}
—————————————— ————————————————————————
—————————————————— —————————————————————
【函数\方法】
public static void name (int ,int )
修饰符 返回值类型 函数名(参数类型 形参1 ,参数类型 形参2…)
{
执行语句;
Return 返回值;
}
【函数的重载\overload】
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可(参数列表不同)
好处:方便阅读,优化了程序设计;
【数组】
int [ ] x = new int[3 ] // int x [ ]=int [ ] x []位置不同,二者等同
栈:自动清除 堆:垃圾回收机制
【】
StringBuffer name= new StringBuffer( ) //定义个容器name
name.append( temp ); //如将1101通过temp挨个装进name容器中
System.out.println( name.reverse( ) ); //将 1011打印出来(反过来)
【查表】
char[ ] ss={‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’} ;
【二维数组】
定义:int[ ] [ ] arr = new int [3] [4]; //定义了名称为arr的二维数组,二维数组中有3 个一维数组。每一个一维数组中有4个元素
int [ ] [ ] arr= { {3,5,1,7,6} ,{2,9} ,{5,0,2,4} } ;
另一种定义方式:
int [ ] [ ] arr= new int[3] [ ] ;
int[0]=new int [5];
int[1]=new int [2];
int[2]=new int [4];
System.out.println(arr.length ); //打印二维数组的长度 =3
System.out.println(arr[0].length); //打印二维数组中第一个一维数组的长度 =5
【】
int [ ] [ ] arr=int arr [ ] [ ] = int [ ] arr [ ] ; //三个位置不一,但意思等同
int [ ] x , y[ ]; // x是一维,y是二维。 ----------考试题 int[]x; int[]y[];
【排序】
【选择排序】——用第一个数与后面的所有进行比较,并换位。
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[y]<arr[x])
{
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
【冒泡排序】——相邻2个元素进行比较,如果符合条件换位。
public static void MaoPao(int[] arr)
{
int temp;
for(int x=0;x<arr.length;x++)
{
for(int y=0;y<arr.length-x-1;y++) //-x: 让每一次比较的元素减少;
{ -1:避免角标越界。
if(arr[y]>arr[y+1]) //冒泡排序时相邻2数比较
{
temp=arr[y+1];
arr[y+1]=arr[y];
arr[y]=temp;
}
}
}
}
【开发常用排序///简单】——JAVA中已经定义好的排序方式。小到大
类class前面输入——》import.java.util .* ;
main 函数内输入——》 Arrays.sort(arr); // 完成数组arr的排序
【折半查找】
折半查找提高了查找效率,要求:数组要求是顺序的!
class ChaZhao
{
public static void main(String[] args)
{
int []arr={1,2,3,4,5,6,7,8,9};
int x = ZBchazhao(arr,6);
System.out.println("x="+ x);
}
public static int ZBchazhao(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2; // mid = (min+max)>>1 ;
while(min < = max)
{
mid = (min + max )>>1;
if(key>arr[mid])
min=mid + 1;
else if(key < arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
}
【进制转换 优化】
class ArrayTest7
{
public static void main(String[] args)
{
toBin(-6);
toHex(-60);
toBa(60);
}
/*
十进制-->二进制
*/
public static void toBin(int num)
{
trans(num,1,1);
}
/*
十进制-->八进制
*/
public static void toBa(int num)
{
trans(num,7,3);
}
/*
十进制-->十六进制
*/
public static void toHex(int num)
{
trans(num,15,4);
}
public static void trans(int num,int base,int offset)
{
if(num==0)
{
System.out.println(0);
return ;
}
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr = new char[32];
int pos = arr.length;
while(num!=0)
{
int temp = num & base;
arr[--pos] = chs[temp];
num = num >>> offset;
}
for(int x=pos; x<arr.length; x++)
{
System.out.print(arr[x]);
}
return ;
}
}