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转换成的进制。使用第二个参数指定的基数,将字符串参数解析为有符号的整数。

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

 负数的二进制

逻辑运算符

"&"  和  "&&"  的区别

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

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

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

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

位运算符

package test;

/**
 * ^的运算方法是 相同为0,相反为1
 * |的运算方法是 有1则为1
 * &的运算方式是 有0则为0
 * ~的运算方法是 求反,负数的二进制表示就是该负数的绝对值的二进制数按位取反再加一
 * >>n的运算方式 右移n位,正填0,负填1,正数x/(2^n)
 * <<n的运算方式 左移n位,正填0,负填1,正数x*(2^n)
 * >>>n的运算方式  不带符号右移n位,填0,32位系统是该数前补足32个0,64位补足64个0
 */

public class TestOperation {

	public static void main(String[] args) {
		System.out.println(1^2);
		/*
		 * 1 001
		 * 2 010
		 * 3 011
		 */

		System.out.println(4^5);
		/*
		 * 4 100
		 * 5 101
		 * 1 001
		 */

		System.out.println(15^21);
		/*
		 * 15 01111
		 * 21 10101
		 * 26 11010
		 */

		System.out.println("-----");

		System.out.println(1|2);
		/*
		 * 1 001
		 * 2 010
		 * 3 011
		 */

		System.out.println(4|5);
		/*
		 * 4 100
		 * 5 101
		 * 5 101
		 */

		System.out.println(15|21);
		/*
		 * 15 01111
		 * 21 10101
		 * 31 11111
		 */

		System.out.println("-----");

		System.out.println(1&2);
		/*
		 * 1 001
		 * 2 010
		 * 0 000
		 */

		System.out.println(4&5);
		/*
		 * 4 100
		 * 5 101
		 * 4 100
		 */

		System.out.println(15&21);
		/*
		 * 15 01111
		 * 21 10101
		 * 5  00101
		 */

		System.out.println("-----");

		System.out.println(~5);

		/*
		 * 5 00000101
		 *-6 11111010
		 *   00000101+1
		 *
		 */

		System.out.println(~21);

		/*
		 * 21 00010101
		 *-22 11101010
		 *    00010101+1
		 *
		 */

		System.out.println(~-16);

		/*
		 *-16 11110000
		 * 15 00001111
		 */

		System.out.println("-----");

		System.out.println(15>>2);

		/*
		 * 15 01111
		 * 3  011
		 */

		System.out.println("-----");

		System.out.println(15<<2);

		/*
		 * 15 0001111
		 * 60 0111100
		 */

		System.out.println("-----");

		System.out.println(-5>>>2);

		/*
		 *  5 00000101
		 * -5 11111011
		 *    2^32右移2个0
		 */

		System.out.println(-5>>>30);

		/*
		 * -5 11111011
		 *    2^32右移30个0
		 *    00000011
		 */
	}
}

移位运算的总结

对于左移运算:

  • 每左移一个位,高阶位都被移出(并且丢弃),并用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. 最详细的JavaWeb开发基础之java环境搭建(Windows版)

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

  4. appium java 环境搭建

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

  5. java环境搭建系列:JDK环境变量详细配置

    学习java语言,编写java程序,运行java程序,都离不开Java环境的支持,最重要的就是安装JDK,JDK给我提供了java程序的开发环境和运行环境.为了让java程序放在电脑的任意位置都可以执 ...

  6. java环境搭建系列:JDK从下载安装到简单使用

    最近,问的比较多的问题居然是jdk的问题,对于新手来说这确实有点难度,毕竟一个人经常上网浏览新闻和观看视频的人,一下子开始一门编程语言的环境搭建.这中间需要一个慢慢适应的过程.回想当初我在这个阶段也很 ...

  7. java环境搭建 windows

    windows搭建Java环境 1.下载java开发工具jdk安装包 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/inde ...

  8. Mac系统-java环境搭建_01

    一.安装jdk 下载地址:http://www.oracle.com/technetwork/Java/javase/downloads/index-jsp-138363.html 1.傻瓜式安装下一 ...

  9. linux的基本java环境搭建

    1.安装rz,sz以便于上传和下载文件 yum install -y lrzsz 2.安装java环境 -- jdk1.8 官网下载jdk1.8:http://www.oracle.com/techn ...

随机推荐

  1. [LeetCode] Minimum Window Substring 最小窗口子串

    Given a string S and a string T, find the minimum window in S which will contain all the characters ...

  2. 解决关键SSL安全问题和漏洞

    解决关键SSL安全问题和漏洞 SSL(安全套接字层)逐渐被大家所重视,但是最不能忽视的也是SSL得漏洞,随着SSL技术的发展,新的漏洞也就出现了,下面小编就为大家介绍简单七步教你如何解决关键SSL安全 ...

  3. 关于腾讯云ubuntu服务器tomcat访问慢问题

    在腾讯云上配了个一元的学生云,开始一切正常,直到配置tomcat开始出现各种莫名其妙的问题.最莫名其妙的是tomcat启动了,端口也 正常监听,安全组也放行端口了,然后问题来了. 用浏览器访问tomc ...

  4. ReadMe.md MarkDown file

    MarkDown 文件写法类似写Confluence page. http://blog.csdn.net/kaitiren/article/details/38513715

  5. WPF系列:无边框窗口

    <Window x:Class="Ares.Animations.Window3" xmlns="http://schemas.microsoft.com/winf ...

  6. Keepalived+MySQL双主架构

    l  架构准备 Node1 192.168.15.3 Node2 192.168.15.4 VIP 192.168.15.254 l  软件 MySQL 5.6 Keepalive yum insta ...

  7. 过滤器(Filter)的应用

    过滤器的概念 Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应. 主要用于对HttpServletRequest 进行预处理,也可以对HttpSe ...

  8. 使用YUM管理软件包

     一.概念 YUM,全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器 ...

  9. upTodown

         ------->>>  从左图变为有图,并实现将左图上面的信息隐藏. <img src="../images/up.gif" border=&qu ...

  10. [Tommas] 测试用例覆盖率(三)

    三.测试数据的设计 每一个测试思路最终都要转化成具体的数据才能来执行.关于测试数据设计的方法也不外乎那几种,就不再赘述了.此处单就一些经常易犯的错误,提出一些注意点,作为用例数据设计时的参考: 1.尽 ...