首页 > 代码库 > Java第一天

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     }

 

Java第一天