1 、 Java 的特点
Java tutorils 是这么描述的
The Java programming language is a high-level language that can be characterized by all of the following buzzwords:
|
|
1. Simple 简单的: java 里面去掉了 C++ 里面的对指针的操作,引用里面也保存了指针的地址,相对 C++ 中的指针弱化了,垃圾系统自动处理; C++ 中的垃圾要自己去 destroy ,这一点 java 虚拟机会自动去收集垃圾
2. Object oriented 面向对象的: java 是一门完全面向对象的语言,不支持 C 语言中面向过程的编程。
3. Distributed 分布式的: java 中包含了一个支持 HTTP FTP 等基于 TCP/IP 协议的子库, java 应用程序通过 URL 打开网络上得资源和访问本地资源一样方便快捷,为分布式的环境提供了先天的优势。
4. Multithread 多线程的: java 提供的多线程可以允许程序同时执行几个任务,这样就会有更好的交互性,在用户体验上要比单线程好
5. Dynamic 动态的:动态特性是其面向对象设计方法的发展,允许程序动态的载入运行过程中所需要的类,这是 C++ 语言在面向对象的程序设计中无法实现的。
6. Architecture neutral 结构中立的: java 的目的是支持到部署到异构的网络环境。在这样的环境下,应用程序必须保证在各种平台上运行,在不同的硬件平台上必须支持不同的操作系统,并能与多种语言相互操作。为了适应环境的多样性, java 编译器为我们生成结构中立的字节码文件。 Class
7. Portable 便携的:
8. High performance 高性能:性能始终是一个被考虑的因素, java 平台实现的优越的性能,虚拟机直接将字节码翻译成机器码。
9. Robust 健壮的: java 检查系统在编译和运行时的异常,类型检查使很多错误能够早期发现,摒弃了指针操作,减少了内存操作的可能性。
10. Secure 安全的:提供了广泛的编译时检查 运行时检查,引导程序员养成良好的变成习惯。内存管理方式非常简单
2 、 Jdk/jre/jvm
jdk:java developer’s kit ( java 开发工具包)包含了 jre
jre : java runtime environment ( java 运行环境)能够运行 java 环境所需要得环境,一般服务器安装 jre 就可以了,无需 jdk 。 Jre 中包含了 jvm
jvm : java virtual machine ( java 虚拟机)
3 、 javase/javame/javaee
javase :java 标准平台, javaee 基础内容
javame : java 嵌入式平台
javaee : java 企业级平台
4 、安装开发环境
1. 下载 jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. 傻瓜式安装
3. 环境变量配置
Windows 环境下:我的电脑右键属性高级环境变量,新建
JAVA_HOME:jdk 安装目录
CLASSPATH:.
PATH:$JAVA_HOME/bin
配置完成后在 CMD 中敲 javac 试一下看有没有成功
5 、第一个 java 程序
用记事本新建一文件 文件名为 MyFirstApp.java
手动敲入如下代码
public class MyFirstApp {// 注意必须和文件名一致
public static void main(String[] args){
System.out.println("hello world");
}
}
编译:打开 cmd 窗口进入 myFirstApp.java 所在的文件夹
命令: javac MyFirstApp.java
如果没有任何东西输出则编译通过
会在同一个目录下生成一个 MyFirstApp.class 文件
执行: java MyFirstApp 注意后面没有扩展名,如果看见 hello world 在正常
说明
main 方法为 java 入口方法类似 BCB 中的 WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
一个类中最多只有一个 main 方法
同一个文件中可以写多个类,但只能有一个是 public 的
例如:
public class MyFirstApp
{
public static void main(String[] args){
String name="zhangsan";
new Second();// 实例化 Second
System.out.println("hello world:"+name);//+ 字符串连接
}
}
class Second
{
public Second(){
System.out.println("second");
}
} 编译后会多了一个 class 文件,说明一个类就会有一个 class 文件
Java 命令执行的过程:
1 、启动 jvm ; 2 、找所需要的 class 文件 3 、加载字节码文件到内存中 4 、找类的 main 方法
1 、包 工程过大,用来管理庞大的类文件,一般把类似的类放在一个包中
语法: package 包名 位于 java 文件的最上面
编译时注意要 javac –d MyFirstApp.java 这是会按照包名生成相应的路径文件夹
运行时注意 要用 java 包名 + 类名
如果在 java 文件中用到了别的包中的类,这是我们需要用 import 关键字引进来,一般放在 package 下面
2 、 jar 命令
把制定的 class 打为 jar
jar cvf abc.jar dir
这样会把 dir 下面的内容打在名称为 abc.jar 的包中
如果在别的项目中想引用这个 jar ,在 classpath 中添加此 jar 文件即可
Jvm 查找类的顺序一般为 1 、当前目录 2 、 $JAVA_HOME/jre/lib/rt.jar 这也是我们不用把 rt.jar 配置在环境变量的原因 3 、 classpath 配置
3 、注释
1 、单行注释 //
2 、多行注释 /* */
3 、文档注释 /** */ 可以生成 html 帮助文档 javadoc a.java –d .\doc
4 、 jdk 基本包
Java.lang 使用时不用引入
java.awt javax.swing javax.awt.event// 图形界面包
java.io javax.nio// 文件流
java.net// 网络包
java.util// 工具包
5 、编码习惯
类、接口的首字符大写,如果由多个单词组成,各单词的首字母大写
方法名、变量名首字母小写,多个单词首单词字母小写其余单词首字母大写
常量名全部大写如果多个单词要用 _ 分割
包名全部小写
标识符由字母 下划线 $ 数字组成,不能由数字开头 ( 这是语法 )
6 、基本数据类型
boolean byte short char int doube long float
注意 String 不是基本数据类型
Java 中从低字节向高字节类型自动转换
byte ->short ->int-> long-> float ->double
逆向过程需要强制转换但是精度会丢失
经典的类型提升的例子
public class ByteInt
{
public static void main(String[] args){
byte b=1;
b++;
System.out.println(b);
}
}
public class ByteInt
{
public static void main(String[] args){
byte b=1;
b=b+1;
System.out.println(b);
}
}
第二个则编译不通过
7 、数据类型分类
1 基本类型 2 、引用类型 3 、 void 类型
引用类型存储的是对象在内存中的地址,栈负责给方法分配空间 堆负责给对象分配空间,如果一个引用不指向任何一个对象就会报空指针异常
8 、垃圾回收
如果一个对象没有任何的引用指向他,他就是一垃圾;
Jvm 虚拟机会自动释放它,如果 jvm 不能及时释放你可以用 System.gc() 提醒释放
8 、运算符 ( 略 )
@author http://javaflex.iteye.com/