01 java 编程基础

JAVA语言特点

v      简约且简单

v      平台无关性

v       面向对象

v       多线程

v       分布性

v       高性能(相对于其他解释型语言)

v       健壮性

Java虚拟机相关概念

v      什么是JVM

       JVM是Java虚拟机(Java Virtual Machine)的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

v      为什么使用JVM?

       Java语言最重要的特点就是可以在任何操作系统中运行。使用Java虚拟机就是为了支持与操作系统无关,在任何系统中都可以运行。

v      JVM的基本原理

       Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

 

环境变量说明

v      Path

§        Windows操作系统用来寻找可执行文件的路径。

v      Classpath

§        Java虚拟机(JVM)借助类装载器装入应用程序使用的类,具体装入哪些类根据当时的需要决定。

§        CLASSPATH环境变量告诉类装载器到哪里去寻找三方提供的类和用户定义的类。另外,你也可以使用JVM命令行参数 –classpath分别为应用程序指定类路径,在 –classpath 中指定的类路径覆盖CLASSPATH环境变量中指定的值。

       javac–classpath 路径 java文件

       java–classpath 路径 java类

 

v      注:

§        javac 命令后跟的是源程序文件全名(包括扩展名.java);

§        java 命令后跟的是主类名(不包括扩展名.class);

 

 

源程序文件命名原则

v      一个源程序文件中可以包含多个类,但只能有一个类用public修饰;也可以所有的类都不用public修饰.

 

v      如果源程序文件有public修饰的类,则源程序文件名必须和public修饰的类名相同;否则源程序名可以是任何合法的标识符.

 

Java开发常用命令

v      Java开发工具包括:

§        javac:Java编译器,用来将java程序编译成bytecode。

§        java:Java解释器,执行已经转换成bytecode的java应用程序。

§        javadoc:文档生成器,创建HTML文件.

§        javap:反编译,将类文件还原回方法和变量

要点补充:

环境变量的设置的注意点:

    A:建环境变量必须是系统变量。

    B:%%:表示在一个环境变量中调用另一个环境变量。

       %Java_Home%\bin

Path:用于搜索可执行文件。

classpath:用于搜索类文件。

字符集:

       char是字符类型,JAVA语言对字符采用unicode字符编码,

       由于计算机只能储存二进制数据,必须对字符进行编码

       字符编码:用一串二进制数据来表示特定的字符。

       ASCII码:表达现代英语和其他西欧语言,1个字节,7位,128个字符。

       ISO-8859-1(Latin-1):国际化标准组织为西欧语言中的字符制定的编码,1个字节8位,与ASCII兼容

       gb2312(GBK21866):对简体中文字符的编码,收录7445,21866,与ASCII兼容。

       Unicode字符集:收录全世界所有语言中的字符,跨平台字符。

 

       UTF-8(传输速度比UTF-16在网络比较快。):有的系统不支持Unicode。

       UTF-16

       在Unicode字符集中,一个字符占2个字节(16位)。

       一个字节占8个bit位,最多可以占到4个字节。

 

在JAVA中,有六个不同的地方可以存储数据:

 

1. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。

 

2. 堆栈(stack)。位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时候,JAVA编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些JAVA数据存储在堆栈中——特别是对象引用,但是JAVA对象不存储其中。

 

3. 堆(heap)。一种通用性的内存池(也存在于RAM中),用于存放所以的JAVA对象。堆不同于堆栈的好处是:编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当你需要创建一个对象的时候,只需要new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代码。用堆进行存储分配比用堆栈进行存储存储需要更多的时间。

 

4. 静态存储(static storage)。这里的“静态”是指“在固定的位置”。静态存储里存放程序运行时一直存在的数据。你可用关键字static来标识一个对象的特定元素是静态的,但JAVA对象本身从来不会存放在静态存储空间里。

 

5. 常量存储(constant storage)。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。有时,在嵌入式系统中,常量本身会和其他部分分割离开,所以在这种情况下,可以选择将其放在ROM中

 

6. 非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。

 

1、静态存储区:内存在程序编译时就分配好了,比如静态变量;

2、栈区:各种原始数据类型的局部变量都是在栈上创建的,当程序退出该变量的作用范围的时候,这个变量的内存会被自动释放。

3、堆区:对象(包括数组)都是在堆中创建的。程序在运行的时候用new关键字来创建对象,对象创建时会在堆中为其分配内存。



转载于:https://my.oschina.net/u/2552902/blog/543940

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值