对于不同运行的平台,有不同的JVM。JVM屏蔽了底层运行平台的差别、实现了"一次编译,到处运行"。
一、Java常用开发工具
编译器
记事本
Notepad++
EditPlus
UltraEdit(UE)
其他文本编译器
集成开发环境
JBuilder
Eclipse(http://www.eclipse.org/)
NetBeans(http:www.nebeans.org/)
只要是文本工具就能写代码
二、Java反编译介绍
Cavaj JavaDecompiler 反编译器是一款图形界面的免费工具、可以重新从Java Class(类)文件中构建源代码,它支持Java applets,JAR和ZIP文件的反翻译,从中还原你所需要的源代码,之后你就可以通过Java编译工具中的Class浏览器查看、或进行相关操作。
Cavaj Java Decompiler是独立的Windows应用程序,即使没有安装Java,也可以正常使用。
下载地址:
http://cavaj-java-decompiler.softonic.com/
垃圾回收器(GC)
不在使用的内存空间应当进行回收--垃圾回收。在C/C++等语言中,由程序员负责回收无用的内存。
垃圾回收器在Java程序运行过程中自动启用,用于检查并释放那些可以被释放的存储空间、程序员无法精确控制和干预。
三、变量与标识符
数学名词:
变数或变量,是指没有固定的值,可以改变的数,变量以非数字的符号来表达、一般用拉丁字母。变量是常数的的相反,变量的用处在于一般化描述指令的方式。
计算机解释:
变量就是系统为程序分配的一块内存单元,用来储存各种类型的数据,根据所储存的数据类型的不同,有各种不同的类型变量,变量名代表这块内存中的数据。
变量分类:
按所属的数据类型划分:
基本数据类型变量引用数据类型的变量
按被声明的位置划分:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量
public class Hellowrld{ int a=20;//成员变量 public static void main (string[]args){ int num=10;//局部变量 System.out.println("hello Wrld");}}
Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
Java标识符命名规则:
由字母、数字、下划线(_)和美元符号($)组成。
不能与数字开头
区分大小写
长度无限制
不能是Java中的关键字和保留关键字。
标识符命名习惯:驼峰命名法、见名知意、以单词或单词组合来命名
合法标识符:
vince、daoguo、user_name、_userName、$abc_123
非法标识符:
2UserName、user#Name、Hello虎哥、class
public clsaa Test1{ public static void main(String[]args){ int num=10;//局部变量 //int 虎哥=20;//不建议使用 } }
四、八种基本数据类型
字节(Byte)是:计算机文件大小的基本计算单位。
1个字节(Byte)=8个位(Bit)
Bit意为"位"或"比特",是计算机运算的基础,二进制中的一位,是二进制最小信息单位、二进位可以用来表示一个简单的 正/负的判断,有两种状态的开关(如电灯开关)
1个字节(Byte)=8个位(Bit)
2个字节(Byte)=16个位(Bit)
4个字节(Byte)=32个位(Bit)
8个字节(Byte)=64个位(Bite)
单位换算:
1byte=8bit
1kB =1024byte
1MB=1024MB
1GB=1024MB
1TB=1024G
1PB=1024TB
说明:
在内存计算机过程中、字节少的数据运算速度更快;在硬盘存储中、字节少的数据类型也可充分存入更多的数据。
五、基本数据类型的声明
声明变量的格式:
(1)声明变量
类型、变量名;
(2)声明的同时给变量赋值
类型、变量名=值
(3)给已声明过的变量赋值
变量名=值;
六、进制与转换
计算机进制通常有:十进制、二进制、八进制、十六进制
十进制:
人类算数采用十进制、可能跟人类有十根手指有关,亚里士多德称人类普遍使用十进制,只不过是绝大多数人生下来就有十根手指这样一个解剖学事实的结果。
10、150、1050.......
二进制:
计算机中的数据都以二进制数字保存。二进制:逢二进一。即只有0、1两个值。
如:十进制的10在计算机内保存为二进制的1010计算机中信息的储存单位
位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。字节(Byte):一个字节由八个位组成。它表示作为一个完整处理单位的8个二进制数码。
八进制:
基数位八,Java中八进制数据要以0开头。如:0123
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。现在的计算机很少用八进制了。
二进制
八进制
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
十六进制:
二进制表示法太冗长,所以在程序中一般喜欢用十六进制
十六进制:基数为十六,逢十六进一。它用abcdef表示从0-9之上的值
Java中十六进制的数据要以0x或0x开头。如:2x23D
十六进制转换成二进制只需将每个十六进制数字替换为相对应四个二进制位即可。
二进制
十六进制
二进制
十六进制
0000
0
1001
9
0001
1
1010
A
0010
21011
B
0011
3
1100
C
0100
4
1101
D
0101
5
1110
E
0110
6
1111
F
0111
7
1000
8
补码:
事实上,计算机内的二进制数值是以补码形式表示的。
补码:一个正数的补码和其原码的形式是相同的。
负数的补码是:将该数的绝对值的二进制形式、按位取反再加1。
由此可知,二进制补码数值的最高位(最左位)是符号位:该位为0,表示数值为正数;该位为1,表示数值为负数。
十进制
二进制
10
000000000 000000000 00000000 00001010
-10
11111111 11111111 111111111 11110110
主要原因:使用补码,可以将符号位和其它位统一处理;
同时,减法也可按加法来处理。
另外,两个用补码表示的数相加时,如果最高位(符号位)有进位、则进位被舍弃。
二进制数转换为十进制数:
按权相加:把二进制数首先写成加权系数展开式,按后十进制加法规则求和。
七、基本数据类型的转化
自动类型转换:
容量小的类型自动转换成容量大的数据类型
byte、short、int、它们三者在计算时会转换成int类型
如果把int值转换为float值、或者long转换为double值、不需要强制转换、但可能丢失精度。
//基本数据类型转换public class Test3{ public static void main (String[] args){ byte b = 10; short s = b;//把一个字节赋值给一个短整型变量、自动转换 int i= S;//把一个短整型赋值给一个整型变量、自动转换 long lon = i; // char ->int 自动转换 char sex='男'; int sex2 = sex; System.out.println(sex2); float f=20; double d = f; System. out.println(d);//float 和 double 是属于近似值 //byte、char、short、int、long 属于精确值//精确值转近似值可能会丢失精度int num = 2147483000;float num2 = num;//如果用于表示货币值、不建议使用float或doubleSystem.out.println(num2);} }
强制类型转换:
容量大的类型转换成容量小的数据类型时,要加上强制转换符。
long n = 100L;
int i = (int)n;
有可能会造成精度降低或数据溢出,使用时要小心。
boolean 类型不能转换成任何其它数据。