黑马程序员_java基础(1) JDK汇总&变量与运算,_javajdk
黑马程序员_java基础(1) JDK汇总&变量与运算,_javajdk
-------android培训、java培训、期待与您交流! ----------一.JAVA JDK 汇总
jdk 与 jre 区别: jre:包含jvm(JVM Java Virtual Machine) 和 java 程序核心库,java 运行环境,相当于一台操作系统,面向java程序 使用者,而不是开发者 jdk: 提供给java开发人员使用,包含用java程序开发的JDK工具,也包含JRE 运行环境,开发工具,如:javac.exe, jre.exe 等 且实现java程序都放在\lib\tools.jar包中 jvm:java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件, 这种类文件可以在虚拟机上执行,也就是说class并不直接 与机器的操作系统相对应,而是经过虚拟机间接与操 作系统交互,由虚拟机将程序解释给本地系统执行,JDK包含JRE,JRE包含JVM。bin主要是编译器与JVM 交互 用的头文件lib.jdk 配置 系统环境 :windows 系统属性高级环境变量设置,新增三个系统属性变量 JAVA_HOME,PATH,CLASSPATH JAVA_HOME=c:\Program Files\Java\jdk1.6.0_02 PATH = %JAVA_HOMEE%\bin CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar Linux gedit ~/.bashrc 加入信息 : JAVA_HOME=/usr/java/jdk1.6.0_02 JAVA_BIN=/usr/java/jdk1.6.0_02 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/bin export JAVA_HOME JAVA_BIN PATH CLASSPATH class 文件 在 JRE 运行过程 -------------------------------------------------------------------------------------------------------------------------
二.JDK 常用命令
javac.exe java编译器,java 源代码转换成java字节码 java.exe java 解释器,解释并执行 java应用程序字节码文件 appletivewer.exe Applet程序浏览器,执行HTML文件上的java小应用程序 javadoc.exe 根据java源码及说明语句生成HTML格式的注释文档 jdb.exe java 调试器,设置断点和检查变量 javap.exe java反编译器 jar.exe 压缩工具 native2ascii 字符编码转换工具 servertools 命令行接口,用于注册 或取消注册,启动,关闭一个服务 jconsole 基于JMX的GUI工具,用于连接正在运行的JVM,主要用于监控 jps jps查找当前用户的进程 注意:不是当前系统中的所有进程 jstack 打印所有java线程的堆栈跟踪信息 jstat 显示测试 java hotsport 虚拟机的性能统计信息 jstatd 一个java远程方法调用(RMI)服务器应用程序-它监测Java Hotsport虚拟机的创建和终止并且提供一个接口来允许远程监控工具依附到运行于本地主机的JVM jmap 打印某个java进程的内存信息用于解决堆栈内存溢出的JDK工具 jtack,jmap,jconsole,jvisualvm -------------------------------------------------------------------------------------------------------------------------
三.关键字与标识符
关键字的定义和特点
定义:被Java语言赋予了特殊含义的单词
特点:关键字中所有字母都为小写
abstract default if private this
boolean do implements protected throw
break double import public throws
byte else instanceof return transient
case extends int short try
catch final interface static void
char finally long strictfp volatile
class float native super while
const for new switch
continue goto package synchronized
一共48个,其中最常见的三个关键字 true,false,null,都不是关键字,只是作为一个单独标识类型
其中,很少用的关键字:const,goto,native,strictfp,transient,volatile, 注意:const 和 goto 作为java 中保留字
1.native 是方法修饰符 ,native 方法是由另外一种语言(c/c++/汇编等)实现的本地方法,native可以和其他一些修饰符连用,但是 abstract 和接口interface 方法不能用native 修饰
eg:
public interface LoadInterface
{
void doSomeMethod();
}
public class Load implements LoadInterface
{
public native void doSomeMethod();
private native int doSomeMethodB();
public native synchronized String doSomeMethodC();
static native void doSomeMethodD();
}
strictfp
精确浮点, 修饰类和方法,当一个类和接口用strictfp声明,内部所有的float和double表达式都会成为strictfp的,interface 方法不能用strictfp修饰,class当中可以声明
eg:
strictfp interface LoadTest {
void methodA();
}
class A implements LoadTest {
public void methodA() {
}
public void methodB() {
}
public strictfp void methodC() {
}
}
class B {
strictfp void methodA() {
}
}
transient
变量修饰符 ,在对象存储时,这些变量的状态不会被持久化
volatile
修饰变量,并发线程中访问共享变量,都强迫读取共享内存中的成员的值,若成员值发生改变,强迫线程变化值写入共享内存
eg:
class Test
{
static int m = 0,n = 0;
static void methodA(){
m++;
n++;
}
// 此成员数据会出现不一致
static void methodB(){
System.out.println("m="+m+",n="+n);
}
}
这里 成员变量 m和n 会出现几次更新不一致状态,避免发生此情况,mehtodA 与mehtodB 加上同步sychronized
代码如下:
class Test
{
static int m = 0,n = 0;
static synchronized void methodA(){
m++;
n++;
}
// 此成员数据就所有并发线程共享了
static synchronized void methodB(){
System.out.println("m="+m+",n="+n);
}
}
更简洁的写法,并发线程共享的成员变量用 volatile 声明
代码实现:
class Test
{
// volatile 修饰成员变量,并发线程共享
static volatile int m = 0,n = 0;
static void methodA(){
m++;
n++;
}
// 此成员数据就所有并发线程共享了
static void methodB(){
System.out.println("m="+m+",n="+n);
}
}
标识符
由26个英文大小写字母,数字,下划线,美元符号 $ 组成, 且不能以数字开头命名。java中严格区分大小写
java命名规范:
包名:多个单词组成,所有字母都小写
类名和接口名:多个单词组成,首字母大写
变量名和函数名:多个单词组成,第一个单词首字母小写,从第二单词开始首字母大写
常量名:所有字母都大写,多个单词之间用下划线分隔连接
注释:
多行注释:/* 注释描述 */
单行注释:// 注释描述
文档注释:/** 注释描述 */ 用jdk 工具javadoc 命令进行解析 生成html格式说明文件
-------------------------------------------------------------------------------------------------------------------------四.变量与常量
进制转换 二进制与十进制互转 十进制转二进制 除2取余 运算满10进1,基数0-9, 二进制转十进制 乘以2幂数 运算满2进1,基数0和1 十进制 与 八进制互转,将二进制位表现形式,以每三位取出一个数 十进制 与 八进制互转,将二进制位表现形式,以每四位取出一个数负数进制转换 正数的二进制取反加1,最高位是1 包装器类型 Integer 提供了进制转换功能 eg:
public class Test{
public static void main(String args[]){
int i=100;
String binStr=Integer.toBinaryString(i);
String otcStr=Integer.toOctalString(i);
String hexStr=Integer.toHexString(i);
System.out.println(binStr);
}
}
java中的常量
整数常量。所有整数
小数常量。所有小数
布尔型常量。较为特有,只有两个数值。true false。
字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
字符串常量。将一个或者多个字符用双引号标识。
null常量。只有一个数值就是:null
引用类型 数组,类,接口 类型转换:强制类型转换,自动类型转换 表达式的数据类型自动提升
所占字节数大于某个数据类型字节数,则自动转换,否则强制转换,但可能出现损失精度 -------------------------------------------------------------------------------------------------------------------------
五.运算符
赋值运算= , +=, -=, *=, /=, %=
eg:
int a,b,c; a=b=c =3;
int a = 3; a+=5;等同运算a=a+5;
思考:有什么区别?
short s = 3;
s=s+2;运算后进行类型提升,装不进short类型型中,编译失败
s+=2; 在运算的过程中进行类型转换,编译可以通过
代码实现:
class OperateDemo2
{
public static void main(String[] args)
{
//赋值运算符。= += -= *= /= %=
// int a,b,c;
// a = b = c = 4;
//int a = 4;
//a+=2;//a = a + 2;
short s = 3;
//s+=4;
s = (short)(s + 4);
System.out.println("s="+s);
}
}
逻辑运算 & 与 && 区别:&两边都要进行运算,&&短路功能,第一个为真,第二个参与运算,否则第二个不参与运算 “|”和“||”的区别: || 具备短路功能 第一个为真,第二个不参与运算,否则第二个参与运算
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false
位运算 直接对二进制数运算, <<左移 被移除的高位丢弃,低位补0,乘以2的移动的位数次幂 >>右移 被移位的二进制最高位是0,右移后,高位补0;最高位是1,高位补1,除以2的移动的位数次幂 >>>无符号右移 被移位二进制最高位无论是0或者是1,高位都用0补
&与运算
|或运算6
^异或运算
~反码
代码实现:
class OperateTest2
{
public static void main(String[] args)
{
/*
对一个整数的最后一个字节,高四位和低四位进行换位。
int num = 0101-1100 & 255;
1100-0101
61 = 0011-1101
1101-0011 = 211
*/
int num = 61;
int n1 = num & 15;//低四位
int n2 = num & (15<<4);//高四位
int n = n1<<4 | n2>>>4;
System.out.println("n="+n);
}
}
三元运算 if else结构的简写形式,变量=(条件表达式)?表达式1:表达式2
eg:
class OperateDemo5
{
public static void main(String[] args)
{
int x = 0,y;
y = (x>1)?100:200;
System.out.println("y="+y);
//获取两个整数中的较大的整数。
int a,b;
int max = a>b?a:b;
//获取三个整数中的较大的整数。
int o,p,q;
int temp = o>p?o:p;
int max2 = temp>q?temp:q;
}
}
-------android培训、java培训、期待与您交流! ----------
相关文章
- 暂无相关文章
用户点评