01 java 编程基础
2019独角兽企业重金招聘Python工程师标准>>>
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
01 java 编程基础相关推荐
- Java实验01 Java编程基础(猜数字游戏、随机点名器)
实验一 Java编程基础 实验1-1 随机点名器 一.实验描述 1. 任务描述 编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字.随机点名器具备3个功能,包括存储全班同学姓名.总览 ...
- Java大神推荐,java编程基础必备(必看)
在没有以前的操作习惯的错误情况下,反而容易接受新知识,所以不要因为自己对java一无所知而自卑,相反,这是菜鸟们的优势,但是如何才能从一个菜鸟历练成大神呢,当然是需要学习了,不学习就想成为大神,就是在 ...
- 第二章java编程基础测试题_Java编程基础测试题分享
单选题:(每道题目2分) 1. 下列哪个声明是错误的?(B) A. int i=10; B. float f=1.1; //float f=1.1f C. double d=34.4; D. byte ...
- java编程一般类抽象类的定义,Java编程基础抽象类
本文主要是讲述Java编程基础-抽象类,更多Java技术知识,请登陆疯狂软件教育官网. 抽象类: 抽象:不具体,看不明白关键字abstract 抽象类的特点: 1.抽象方法只能定义在抽象类中,抽象类和 ...
- 《Java程序员面试秘笈》—— 第1章 Java编程基础
本节书摘来异步社区<Java程序员面试秘笈>一书中的第1章,作者:常建功,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 Java编程基础 通过考察Jav ...
- Java编程基础 - 泛型
Java编程基础 - 泛型 [导读] . 什么是泛型 一般传统而言,泛型允许程序员在强类型语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型. 编程技术发展至今很多语言,尤其是强 ...
- 实验一 Java编程基础
面向对象--Java实验报告 实验一:Java基础编程 实验一 Java编程基础 <center> <strong>姓名:</strong> <u>XX ...
- Java编程基础(入门)
Java编程基础 Java概述 Java是一种功能强大的面向对象的编程语言,它不仅吸收了C++语言的各种优点,还摈弃了C++中难以理解的多继承.指针等概念 Java开发环境搭建: 详情见:JDK和Ec ...
- java中的常用名词,Java编程基础常见英语词汇
Java编程基础常见英语词汇 Java编程基础中常见英语的词汇有哪些呢?这些都是学Java编程需要运用到的,下面内容由小编为大家介绍Java编程基础常见英语词汇,供大家参考! Java编程基础常见英语 ...
- java编程基础学习需要多久的时间
Java是当前世界颇为流行的编程语言之一,很多想学习java的人都会听过一句话,先学好java基础,在考虑是自学还是培训学习,同时新的问题出现了,java基础包括什么,需要学习多久呢,对于小白来说,想 ...
最新文章
- LinuxC-运算符
- LeetCode 220. 存在重复元素 III(lower_bound)
- 鼠标悬浮改变背景颜色
- 参考TinyOS官方网站实现BlinkToRadio
- angular使用Md5加密
- 编译原理:利用yacc/bison进行语法分析
- java网上商城外文翻译_英语文献翻译网上商城java.doc
- linux基础教程 05,Linux应用基础教程-CH05磁盘分区和LVM
- 修改mysql默认端口
- 海康、大华摄像头chrome高版本实时播放(java集成)
- steam密码查看_如何查看和清除Steam中的先前别名
- U盘被写保护不能重新格式化
- 使用GLSurfaceView实现涂鸦画板功能
- 回顾马云屌丝岁月的惨状:多次被拒失声痛哭
- PowerDesigner 修改 DBMS
- 写论文文章之怎么写引言
- far在c语言中作用,C语言中的far关键字
- CSS基础(13)- 更多的选择器
- 农民没有钱,怎样从种植养殖方面创业?
- Cocos2d-x学习笔记(十二)3D特效