JRE和JDK

JRE:Java Runtime Environment,java运行环境。

JDK:Java Development Kit,java开发工具包。

使用JDK开发java程序,交给JRE运行。

JDK下载和安装

http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK的目录结构

目录/文件名 功能说明 
 bin  包含编译器、解释器等可执行文件
 include  编写JNDI等程序需要的C语言头文件
 jre  Java运行时环境
 lib  Java类库
 src.zip  核心API所有类的源文件

bin中的主要工具(JDK常用命令) 

文件名 功能说明
javac.exe Java编译器,将Java源程序编译成字节码文件
java.exe Java解释器,执行字节码文件对应的Java类
javadoc.exe 根据Java源码及说明语句生成HTML文档
jar.exe 压缩文件,扩展名为JAR(Java Archive,Java归档),与Zip压缩文件格式相同
jdb.exe Java调试器,可以逐行执行程序,设置断点和检查变量
appletviewer.exe Applet应用程序浏览器

环境变量的配置

右击“我的电脑” —> “属性” —> “高级” —> “环境变量”,在“系统变量”里我们可以看到系统的各个环境变量的值。

  • JAVA_HOME:JDK的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的JDK。如C:\jdk1.7.0_02。

  • PATH:指定命令搜索路径,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  • CLASSPATH:指定类搜索路径,JVM就是通过CLASSPATH来寻找类的。.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

为什么需要配置path?

  • 不把JDK的bin目录加到path的话,需要在JDK的bin目录下打开cmd命令窗口执行 javac/java 等JDK命令。
  • 配置好path后,可以在任何文件目录下打开cmd命令窗口成功运行java/javac等JDK命令,输入省事多了。

path也就是系统变量,它会告诉操作系统可执行文件(*.exe,*.bat)所在的路径。对于操作系统而言,当它要使用某个*.exe 时,会先从当前目录查找这个命令,如果查找不到,OS就会到path所设定的路径去查找该命令,然后执行。

什么时候需要配置classpath?

  • 当我们要在dos下编译运行java程序,如果用到第三方jar包,要让java解释器知道到哪里去找这个类,就需要在classpath中指定路径,否则会报错。【提示程序包不存在】
  • 或者手动加上jar包目录也是可以的:【比较麻烦不推荐】比如第三包jar包位于E:\Program SoftWare\Java目录下,那编译的时候就要执行:javac -classpath E:\Program SoftWare\Java\servlet-api.jar -d build\classes src\com\itheima\Test2.java

classpath是告诉java虚拟机(jvm)要使用或执行的*.class文件放在什么地方。

配置好后在任意目录下运行javac,java命令:

C:\Users\Administrator\Desktop>javac
用法: javac <options> <source files>
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置

临时配置:

  • E:\>set 列出本机全部的环境变量。
  • E:\>set Path 列出环境变量Path的值。
  • E:\>set Path= 清空环境变量Path。
  • E:\>set Path= E:\jdk1.7.0_21 设置环境变量Path的值,只在当前dos命令行有效。
  • 在已有的目录添加新值。E:\>set Path= E:\jdk1.7.0_21;%Path%。

E:\>set classpath=E:\  和  E:\>set classpath=E:\;  的区别

加分号的时候,首先在环境变量的目录下搜索class文件,如果没有找到,再在当前目录搜索class文件。

不加分号的时候,如果在环境变量的目录下没有搜索到class文件,不再在当前目录中搜索。

数据类型

基本数据类型包装类是按照面向对象的思想讲基本数据类型封装成了对象

基本数据类型  对象包装类 
 byte  Byte
 short  Short
 int  Integer
 long  Long
 boolean  Boolean
 float  Float
 double  Double
 char  Charactor

类型对象包装类都是final类

好处

  • 可以通过对象中的属性和行为操作基本数据类型。
  • 可以实现基本数据类型和字符串之间的转换。
    1. 基本数据类型转成字符串: Integer.toString(34);//将34整数变成"34";
    2. 字符串转成基本数据类型。
      • xxx a = Xxx.parseXxx(String);
      • int a = Integer.parseInt("123");
      • double b = Double.parseDouble("12.23");
      • boolean b = Boolean.parseBoolean("true");
  • 把基本数据类型对象包装类变成基本数据类型

Integer i = new Integer("123");

int num = i.intValue();

 整数进制转换

十进制转成其他进制

  • static String toBinaryString(int i) : 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
  • toOctalString(int i) : 八进制
  • toHexString(int i ) ; 十六进制。

其他进制转成十进制

  • parseInt(string,radix); Radix转换成的进制。使用第二个参数指定的基数,将字符串参数解析为有符号的整数。

  1. int x = Integer.parseInt("110",10);
  2. int x1 = Integer.parseInt("110",2);
  3. System.out.println(x);//110
  4. System.out.println(x1);//6

 负数的二进制

逻辑运算符

"&"  和  "&&"  的区别

  • 单& 时,左边无论真假,右边都进行运算;

  • 双& 时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

  • “|” 和“||”的区别同理,双或时,左边为真,右边不参与运算。

  • 异或( ^ ) 与或( | ) 的不同之处是:当左右都为true 时, 结果为false。

位运算符

  1. package test;
  2.  
  3. /**
  4. * ^的运算方法是 相同为0,相反为1
  5. * |的运算方法是 有1则为1
  6. * &的运算方式是 有0则为0
  7. * ~的运算方法是 求反,负数的二进制表示就是该负数的绝对值的二进制数按位取反再加一
  8. * >>n的运算方式 右移n位,正填0,负填1,正数x/(2^n)
  9. * <<n的运算方式 左移n位,正填0,负填1,正数x*(2^n)
  10. * >>>n的运算方式 不带符号右移n位,填0,32位系统是该数前补足32个0,64位补足64个0
  11. */
  12.  
  13. public class TestOperation {
  14.  
  15. public static void main(String[] args) {
  16. System.out.println(1^2);
  17. /*
  18. * 1 001
  19. * 2 010
  20. * 3 011
  21. */
  22.  
  23. System.out.println(4^5);
  24. /*
  25. * 4 100
  26. * 5 101
  27. * 1 001
  28. */
  29.  
  30. System.out.println(15^21);
  31. /*
  32. * 15 01111
  33. * 21 10101
  34. * 26 11010
  35. */
  36.  
  37. System.out.println("-----");
  38.  
  39. System.out.println(1|2);
  40. /*
  41. * 1 001
  42. * 2 010
  43. * 3 011
  44. */
  45.  
  46. System.out.println(4|5);
  47. /*
  48. * 4 100
  49. * 5 101
  50. * 5 101
  51. */
  52.  
  53. System.out.println(15|21);
  54. /*
  55. * 15 01111
  56. * 21 10101
  57. * 31 11111
  58. */
  59.  
  60. System.out.println("-----");
  61.  
  62. System.out.println(1&2);
  63. /*
  64. * 1 001
  65. * 2 010
  66. * 0 000
  67. */
  68.  
  69. System.out.println(4&5);
  70. /*
  71. * 4 100
  72. * 5 101
  73. * 4 100
  74. */
  75.  
  76. System.out.println(15&21);
  77. /*
  78. * 15 01111
  79. * 21 10101
  80. * 5 00101
  81. */
  82.  
  83. System.out.println("-----");
  84.  
  85. System.out.println(~5);
  86.  
  87. /*
  88. * 5 00000101
  89. *-6 11111010
  90. * 00000101+1
  91. *
  92. */
  93.  
  94. System.out.println(~21);
  95.  
  96. /*
  97. * 21 00010101
  98. *-22 11101010
  99. * 00010101+1
  100. *
  101. */
  102.  
  103. System.out.println(~-16);
  104.  
  105. /*
  106. *-16 11110000
  107. * 15 00001111
  108. */
  109.  
  110. System.out.println("-----");
  111.  
  112. System.out.println(15>>2);
  113.  
  114. /*
  115. * 15 01111
  116. * 3 011
  117. */
  118.  
  119. System.out.println("-----");
  120.  
  121. System.out.println(15<<2);
  122.  
  123. /*
  124. * 15 0001111
  125. * 60 0111100
  126. */
  127.  
  128. System.out.println("-----");
  129.  
  130. System.out.println(-5>>>2);
  131.  
  132. /*
  133. * 5 00000101
  134. * -5 11111011
  135. * 2^32右移2个0
  136. */
  137.  
  138. System.out.println(-5>>>30);
  139.  
  140. /*
  141. * -5 11111011
  142. * 2^32右移30个0
  143. * 00000011
  144. */
  145. }
  146. }

移位运算的总结

对于左移运算:

  • 每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。【这意味着当左移的运算数是int 类型时,每移动1位,它的第31位就要被移出并且丢弃;当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃】。
  • 左移都可以使原来的操作数翻倍,程序员们经常使用这个办法来进行快速的 2 的乘法。但是你要小心,如果你将1移进高阶位(31或63位),那么该值将变为负值。

对于右移运算:

  • 每右移一次,就相当于将该值除以2并且舍弃了余数。你可以利用这个特点将一个整数进行快速的2的除法。当然,你一定要确保你不会将该数原有的任何一位移出。

在对byte 和short类型的值进行移位运算时 , Java将自动把这些类型扩大为 int 型,而且,移位后的值也是int 型;如果左移不超过31位,原来对应各位的值不会丢弃。但是,如果你对一个负的byte 或者short类型的值进行移位运算,它被扩大为int 型后,它的符号也被扩展,结果的高位就会被1填充。因此,为了得到正确的结果,你就要舍弃得到结果的高位。这样做的最简单办法是将移位运算的结果再转换成 byte 型 。

无符号右移(>>>) 与 右移(>>)的区别

  • 每一次右移(>>)运算符总是自动地用它的先前最高位的内容补它的最高位。这样做保留了原值的符号
  • 无符号移动(>>>)总是在高位(最左边)补0。

Java环境搭建及语言基础的更多相关文章

  1. 【Java学习系列】第1课--Java环境搭建和demo运行

    本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...

  2. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  3. Selenium Web 自动化 - Selenium(Java)环境搭建

    Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/j ...

  4. java环境搭建心得

     右击此电脑,点击属性, 在打开的电脑系统对话框里发电机i直接点击左侧导航里的[高级系统设置]在打开的电脑系统属性对话框里直接点击下面的[环境变量] 打开环境变量对话框后,直接点击系统变量下面的新建, ...

  5. Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解

    一:java概述: 1982年,SUN公司诞生于美国斯坦福大学校园,并于1986年上市,在NASDAQ(纳斯达克:是全美证券商协会自动报价系统)的标识为SUNW,2007年改为JAVA. 2009年4 ...

  6. 最详细的JavaWeb开发基础之java环境搭建(Windows版)

    阅读文本大概需要 3 分钟. 首先欢迎大家来学习JavaWeb,在这里会给你比较详细的教程,从最基本的开始,循序渐进的深入.会让初学者的你少踩很多坑(大实话),如果你已经掌握了JavaWeb开发的基础 ...

  7. Java环境搭建---(基础)

    首先下载eclipse开发工具,下载地址:http://www.eclipse.org/downloads/,界面如下: 选择eclipse juno(4.2)的版本进入界面 点击Downloads, ...

  8. 最详细的JavaWeb开发基础之java环境搭建(Mac版)

    阅读文本大概需要 5 分钟. 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境.首先 Mac 系统已经带有默认的 Java,但是由于使 ...

  9. appium java 环境搭建

    appium是一款open source 移动自动化测试框架,既支持Android 也支持IOS. appium 基于webdriver协议执行测试脚本. 今天,如炒剩饭,介绍一下搭建appium A ...

随机推荐

  1. [ionic开源项目教程] - 第3讲 左右滑动菜单的实现(使用Tabs和SlideBox)

    使用Tabs和SlideBox实现左右滑动菜单 1.将tab1.html的代码改为如下: <ion-view view-title="健康"> <ion-cont ...

  2. 51nod1376 最长递增子序列的数量

    O(n2)显然超时.网上找的题解都是用奇怪的姿势写看不懂TAT.然后自己YY.要求a[i]之前最大的是多少且最大的有多少个.那么线段树维护两个值,一个是当前区间的最大值一个是当前区间最大值的数量那么我 ...

  3. UVa 136 Ugly Numbers【优先队列】

    题意:给出丑数的定义,不能被除2,3,5以外的素数整除的的数称为丑数. 和杭电的那一题丑数一样--这里学的紫书上的用优先队列来做. 用已知的丑数去生成新的丑数,利用优先队列的能够每次取出当前最小的丑数 ...

  4. Git之 手把手教你使用Git

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  5. urlrewrite 地址重写

    环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...

  6. BZOJ 2303 方格染色

    首先考虑四个格子异或值为1. 然后(重点)发现每个格子的值只和最上面,最左边,和(1,1)的格子的颜色有关. 枚举(1,1)的颜色,联立方程,可以将未知数减少,那么并查集可做. 最后算答案的时候,有些 ...

  7. Linux下安装Android Studio(ubuntu)

    一. 安装Android Studio 1. 添加源,按回车键继续 sudo apt-add-repository ppa:paolorotolo/android-studio 2. 更新源 sudo ...

  8. Error accessing PRODUCT_USER_PROFILE

    1.问题现象再现1)创建用户secSQL> create user sec identified by sec; User created. 2)授权SQL> grant connect, ...

  9. linearlayout 水平垂直居中

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  10. 企业服务总线Enterprise service bus介绍

    企业服务总线(Enterprise service bus). 以往企业已经实现了很多服务, 构成了面向服务的架构,也就是我们常说的SOA. 服务的参与双方都必须建立1对1 的联系,让我们回顾一下SO ...