Java第一天
Java语言概述:
是SUN(Stanford University Network,斯坦福大学网络公司)1885年推出的一门高级汇编语言。
是一种面向Internet的编程语言
随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
跨平台性
命令行方式:
dos命令行,常见的命令:
dir:列出当前目录下的文件及文件夹
md(make directory):创建目录
rd(remove directory):删除目录
cd(change directory):进入指定目录
cd..:退回到上一级目录
cd\:退回到根目录
del:删除文件
exit:退出dos命令行
临时配置方式:通过dos命令中set命令完成
set:用于查看本机的所有环境配置变量的信息。
set 变量名:查看具体一个环境变量的值。
set 变量名=:清空一个环境变量的值。
set 变量名=具体值:给指定变量定义具体值。
在原有环境变量值基础上添加新值:
set path =新值;%path%
注意:这种配置方式只在当前dos窗口有效。窗口关闭,配置消失。
标识符:由26个英文字母大小写、数字:0-9、符号:_ $组成。
定义合法标识符规则:
1.数字不可以开头
2.不可以使用关键字
例:
需求:练习一个hello world程序
思路:
1.定义一个类,因为java程序都定义在类中,java程序都是以类的形式存在的,类的形式其实就是一个字节码文件最终体现。
2.定义一个主函数,为了让该类可以独立运行。
3.因为演示hello world,在控制台上看到该字样,所以需要使用输出语句完成。
步骤:
1.用class关键字来完成类的定义,并起一个阅读性强的类名。
2.主函数:public static void main(String[] args)这是固定形式,jvm认识。
3.使用输出语句:System.out.println("hello world");
5%-2=1
-5%2=-1
int a=3,b;
b=a++;
结果:a=4,b=3
过程:1.开辟一块空间temp用来存放a的初值。2.a++。3.b=temp
int a=3,b;
b=++a;
结果:a=4,b=4;
int i=1;
i=i++;
System.out.println(i);
结果:1
short s=3;
s+=4;
System.out.println(s);
结果:7
short s=3;
s=s+4;
System.out.println(s);
结果:报错,s可能丢失精度
原因:前一种情况s+=4就相当于s=short(s+4);做了加法运算之后进行了强制,而后面一种s+4之后变成了int型,不能赋值给低精度的类型,会丢失精度。
&和&&的区别:
&和&&的运算结果是一致的,但是运算过程有点小区别:
&:无论左边的运算结果是什么,右边都参与运算。
&&:当左边为false时,右边不参与运算。
一个数异或一个数两次,结果还是这个数。
3<<2=3*2(2)=12
左移几位其实就是该数据乘以2的几次方。<<:可以完成2的次幂运算
6>>1=3=6/2(1)
右移其实就是该数据除以2的次幂。>>:对于高位高位出现的空位,原来高位是什么就用什么补这个空位。
>>>无符号右移:数据进行右移是,高位出现的空位,无论原高位是什么,空位都用0补。
最有效率的方式算出2乘以8的结果?
2*8=2*2(3)=2<<3=16
两个值进行交换:
1)这种方法不要用,如果两个整数的数值过大,会超出int范围,会强制转换,数据会变化
a=a+b;
b=a-b;
a=a-b;
2)一个数异或一个数两次,结果还是这个数。
a=a^b;
b=a^b;
a=a^b;
内存的划分:
1.寄存器。
2.本地方法区。
3.方法区。
4.栈内存。
存储的都是局部变量。
而且变量所属的作用域一旦结束,该变量就自动释放。
5.堆内存。
存储的是数组和对象(其实数组就是对象) 凡是new建立的都在堆中。
特点:
1,每一个实体都有首地址值。
2,堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或0.0f,boolean:false,char:'\u0000'
3,垃圾回收机制。当实体没有被指向时,会自动回收。
折半查询的方法找到被插入数的角标
1 import java.util.*; 2 public class Demo 3 { 4 public static void main(String[] args) 5 { 6 int[] arr=new int[]{1,4,7,9,12,15,42,67,78,80,89}; 7 System.out.println(HalfSearch(arr,100)); 8 int index=Arrays.binarySearch(arr,100);//如果存在,返回具体的角标位置,不存在返回的是 -插入点-1 9 System.out.println(index); 10 } 11 //折半查插入的角标 12 public static int HalfSearch(int[] arr,int key) 13 { 14 int max,min,mid; 15 min=0; 16 max=arr.length-1; 17 while(min<=max) 18 { 19 mid=(min+max)/2; 20 if(arr[mid]<key) 21 min=mid+1; 22 else if(arr[mid]>key) 23 max=mid-1; 24 else 25 return mid; 26 } 27 return -min-1; 28 29 } 30 }
int转成Hex
1 public static String intToHex(int num) 2 { 3 char[] chs={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; 4 String hex="0x"; 5 char[] arrHex=new char[8]; 6 int i=0; 7 while(num>0) 8 { 9 int n=num&15; 10 arrHex[i]=chs[n]; 11 12 num=num>>>4; 13 i++; 14 } 15 for(int j=i-1;j>=0;j--) 16 { 17 hex+=arrHex[j]; 18 } 19 return hex; 20 }
十进制转其他进制
1 //十进制转16进制 2 public static String toHex(int num) 3 { 4 return trans(num,15,4)+"H"; 5 } 6 //十进制转8进制 7 public static String toOctal(int num) 8 { 9 return trans(num,7,3)+"O"; 10 } 11 //十进制转2进制 12 public static String toBinary(int num) 13 { 14 return trans(num,1,1)+"B"; 15 } 16 public static String intToHex(int num) 17 { 18 char[] chs={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; 19 String hex="0x"; 20 char[] arrHex=new char[8]; 21 int i=0; 22 while(num>0) 23 { 24 int n=num&15; 25 arrHex[i]=chs[n]; 26 // if(n>=0&&n<=9) 27 // { 28 // //hex+=n; 29 // arrHex[i]=(char)n; 30 // } 31 // else 32 // { 33 //hex+=(char)(n-10+'A'); 34 //arrHex[i]=(char)(n-10+'A'); 35 // switch(n) 36 // { 37 // case 10: 38 // hex+="a"; 39 // break; 40 // case 11: 41 // hex+="b"; 42 // break; 43 // case 12: 44 // hex+="c"; 45 // break; 46 // case 13: 47 // hex+="d"; 48 // break; 49 // case 14: 50 // hex+="e"; 51 // break; 52 // case 15: 53 // hex+="f"; 54 // break; 55 // } 56 //} 57 num=num>>>4; 58 i++; 59 } 60 for(int j=i-1;j>=0;j--) 61 { 62 hex+=arrHex[j]; 63 } 64 return hex; 65 } 66 67 public static String trans(int num,int base,int offset) 68 { 69 char[] chs={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; 70 String hex=""; 71 char[] arrHex=new char[32]; 72 int i=0; 73 while(num>0) 74 { 75 int n=num&base; 76 arrHex[i]=chs[n]; 77 num=num>>>offset; 78 i++; 79 } 80 for(int j=i-1;j>=0;j--) 81 { 82 hex+=arrHex[j]; 83 } 84 return hex; 85 }