Java环境搭建及语言基础
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类
好处:
- 可以通过对象中的属性和行为操作基本数据类型。
- 可以实现基本数据类型和字符串之间的转换。
- 基本数据类型转成字符串: Integer.toString(34);//将34整数变成"34";
- 字符串转成基本数据类型。
- 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环境搭建及语言基础的更多相关文章
- 【Java学习系列】第1课--Java环境搭建和demo运行
本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- Selenium Web 自动化 - Selenium(Java)环境搭建
Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/j ...
- java环境搭建心得
右击此电脑,点击属性, 在打开的电脑系统对话框里发电机i直接点击左侧导航里的[高级系统设置]在打开的电脑系统属性对话框里直接点击下面的[环境变量] 打开环境变量对话框后,直接点击系统变量下面的新建, ...
- Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解
一:java概述: 1982年,SUN公司诞生于美国斯坦福大学校园,并于1986年上市,在NASDAQ(纳斯达克:是全美证券商协会自动报价系统)的标识为SUNW,2007年改为JAVA. 2009年4 ...
- 最详细的JavaWeb开发基础之java环境搭建(Windows版)
阅读文本大概需要 3 分钟. 首先欢迎大家来学习JavaWeb,在这里会给你比较详细的教程,从最基本的开始,循序渐进的深入.会让初学者的你少踩很多坑(大实话),如果你已经掌握了JavaWeb开发的基础 ...
- Java环境搭建---(基础)
首先下载eclipse开发工具,下载地址:http://www.eclipse.org/downloads/,界面如下: 选择eclipse juno(4.2)的版本进入界面 点击Downloads, ...
- 最详细的JavaWeb开发基础之java环境搭建(Mac版)
阅读文本大概需要 5 分钟. 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境.首先 Mac 系统已经带有默认的 Java,但是由于使 ...
- appium java 环境搭建
appium是一款open source 移动自动化测试框架,既支持Android 也支持IOS. appium 基于webdriver协议执行测试脚本. 今天,如炒剩饭,介绍一下搭建appium A ...
随机推荐
- [ionic开源项目教程] - 第3讲 左右滑动菜单的实现(使用Tabs和SlideBox)
使用Tabs和SlideBox实现左右滑动菜单 1.将tab1.html的代码改为如下: <ion-view view-title="健康"> <ion-cont ...
- 51nod1376 最长递增子序列的数量
O(n2)显然超时.网上找的题解都是用奇怪的姿势写看不懂TAT.然后自己YY.要求a[i]之前最大的是多少且最大的有多少个.那么线段树维护两个值,一个是当前区间的最大值一个是当前区间最大值的数量那么我 ...
- UVa 136 Ugly Numbers【优先队列】
题意:给出丑数的定义,不能被除2,3,5以外的素数整除的的数称为丑数. 和杭电的那一题丑数一样--这里学的紫书上的用优先队列来做. 用已知的丑数去生成新的丑数,利用优先队列的能够每次取出当前最小的丑数 ...
- Git之 手把手教你使用Git
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- urlrewrite 地址重写
环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...
- BZOJ 2303 方格染色
首先考虑四个格子异或值为1. 然后(重点)发现每个格子的值只和最上面,最左边,和(1,1)的格子的颜色有关. 枚举(1,1)的颜色,联立方程,可以将未知数减少,那么并查集可做. 最后算答案的时候,有些 ...
- Linux下安装Android Studio(ubuntu)
一. 安装Android Studio 1. 添加源,按回车键继续 sudo apt-add-repository ppa:paolorotolo/android-studio 2. 更新源 sudo ...
- Error accessing PRODUCT_USER_PROFILE
1.问题现象再现1)创建用户secSQL> create user sec identified by sec; User created. 2)授权SQL> grant connect, ...
- linearlayout 水平垂直居中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- 企业服务总线Enterprise service bus介绍
企业服务总线(Enterprise service bus). 以往企业已经实现了很多服务, 构成了面向服务的架构,也就是我们常说的SOA. 服务的参与双方都必须建立1对1 的联系,让我们回顾一下SO ...