即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

java零门槛系列之JDK和进制转换

编程语言 clearlove_lbx 18℃ 0评论
1、JDK    JRE    JVM    三者关系

JDK(java development kit):    java开发工具包


JRE(java runtime environment):    java运行环境


jvm(java virtual machine):    java虚拟机


其中,JDK包含了JRE和一些开发工具,
JRE中包含了jvm和java程序所需的一些核心类库。





2、Windows下Dos命令行常用命令




3、jdk安装和环境变量配置
jdk1.8官网
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


点开以上链接后,选中Accept选项,下载对应系统版本的jdk安装,比如windows x64,
安装过程中会先安装jdk,然后安装jre,建议安装到同一目录的不同子目录下,比如:
D:\java\jdk
D:\java\jre
     





2)配置环境变量
右键 我的电脑==> 属性  高级系统设置  环境变量



在系统变量区进行如下操作:

新建一个变量 :JAVA_HOME=D:\java\jdk
修改path变量:在末尾加入 %JAVA_HOME%\bin(如果原本path末端没有;需要添加;)
添加CLASSPATH变量: CLASSPATH=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;.
  (注意最后有一个分号和逗号,逗号表示当前路径)



这里解释以下三个设置:
JAVA_HOME主要用于保存java的安装路径
path为系统环境变量,用于保存系统可执行文件,类似QQ.exe,360.exe等待,这里设置path,只是用于可以在命令行任意路径下都能够使用java命令
CLASSPATH为类路径,用于java程序在编译和运行时在类路径下搜索所调用的相应的类,如果你经常碰到运行一些基本的程序时报xxx.class
not found错误,很可能该路径配置有问题。



配置完成后,打开命令行 : 开始 –> 运行 –> CMD   输入 java -version









下面是一些环境变量相关的知识点



%path%        动态配置原path位置

PATH:    先在当前路径找,没找着再去path指定路径下查找。





CLASSPATH:  先在指定路径下查找,没找着在去当前路径下查找。








4、java运行机制和特点

java特点


1. 跨平台,sandbox(jvm)   : 正是因为jvm的不跨平台性才有java的跨平台性


2. oop : oriented object program,面向对象编程. ooa ood


3. 一切都是对象.





运行机制


    1.编写源代码 : xxx.java


                            javac(java compile)


    2.编译源代码 : *.java ———————-> .class


                            java


    3.运行         : *.class ———————>程序





程序: 可执行的文件.


进程: 运行着的程序.



5、进制转换

二进制和十进制之间的转换:




二进制转十进制:
我们知道十进制每一位上最大的数是9也就是(10-1),逢10往前进一位,
11=1*10+1*1    
111=1*100+1*10+1*1
所以不难理解 二进制的每个位上最大的数是1,相应的应该是逢2进1,所以二进制转换成十进制有
10=1*2+0*1      
= 2
110=1*2*2+1*2+0*1
=6
==============>>>>>>>








十进制转二进制:
前面我们已经算过由二进制转换成十进制,比如:  110=1*2*2+1*2+0*1
我们可以观察到,除了最后一项,前面几项都是2的倍数,因此可以通过除法来将十进制转成二进制,方法如下:
最终有余数组成转换后的数







5. 进制转换练习:

1.负数的表现形式,为什么如此设计?


2.-128是在内存中是如何存储的?推算过程?


3.如果字节表示未11111111,则其真实数据是多少?


4.正负数是否都支持补码的方式?


5.正数是否是负数的减一取反?








<-----------------------------------------华丽的分割线----------------------------------------->


1,在计算机中,负数一般为正数的补码形式,具体运算过程如下:


        首先将正数转变为二进制形式,然后每个位上的数取反再加1


        例如:byte类型的6,二进制形式为   0000 0110


                                         取反后:         1111 1001


                                         再加1得:       1111 1010


     数的最高位为符号位,0代表正数,1代表负数。


     byte类型为1个字节也就是8位,去除符号位所以所能表示数的个数为2的7次方,也是说最大数为127 (0111 1111),其中包括了0,所以byte类型的范围为-128~127


    


    负数在设计过程中需要遵循数学规则:首先互为相反数的两个正负数相加必须得0,采用补码的方式可以将最高位溢出,保留负数的


    性质。
-127:    1000 0001
       0111 1111
——————–
     10000 0000


     ^  最高位溢出,最终为0






2,这里要求-128的存储形式,通常情况下我们要求一个负数的表现形式可以通过先求其对应正数的表现形式,然后取反再加1,


    但是byte类型中最大的正数是127,上面的方法行不通。我们可以换一个思路,可以先求-127,然后再-1就得到-128了。


    毕竟计算机中的负数也得遵循数学规则是吧。


                                       127 :    0111 1111


                                      -127:    1000 0001


                              所以 -128: 1000 0000








3,首先我们可以判断11111111是一个负数,采用逆向思维,我们可以先求其正数形式也就是相反数:方法是-1后,再取反


                                              1111 1111


                        -1后取反        0000 0001


      原数的相反数为正数1,所以原数1111 1111的十进制表示数为 -1








4,是的,正负都支持补码的形式,证明如下:


         我们在求一个负数的二进制表现形式的时候通常需要求其对应的正数的补码。而该过程是可逆的,即我们可以通过这个方式反向求


正数的表现形式,-1后取反,如题3中所示,


我们知道负的负数也是正数,那么我们对题3中的1111 1111再求其负数形式,可以采用取反再加1的方式,过程如下:


                            1111 1111


                            0000 0000


             取反加1   0000 0001


从而证明了正负数都支持补码的形式








5,通过前面3,4的分析我们知道,正数可以通过其对应负数-1后再取反得到,该过程是可逆的。










转载请注明:CodingBlog » java零门槛系列之JDK和进制转换

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情