Java基础学习分享
一、Java介绍
Java是由原Sun公司(现已被甲骨文公司收购)于1991年开发的编程语言,初衷是为智能家电的程序设计提供一个分布式代码系统。为了使整个系统与平台无关,采用了虚拟机器码方式,虚拟机内运行解释器,而针对每种操作系统均有其对应的解释器,这样Java就 成了与平台无关的语言。
二、Java语言特点
Java是一个广泛使用的网络编程语言,它简单、面向对象,不依赖于机器结构,不受CPU和环境限制,具有可移植性、安全性,并提供了多线程机制,具有很高的性能。
(1)简单性。Java语言虽衍生自C/C++,但它略去了C/C++中指针、运算符重载、多重继承等复杂的概念,并通过自动垃圾收集机制大大简化了程序员的内存管理工作。另外,Java对环境的要求也非常低,它的基本解释器及类仅几十KB,加上标准类库和线程的支持也只有大约200KB。
(2)面向对象。Java是一个完全面向对象的语言,其程序设计集中于对象及其接口,它提供了简单的类机制及动态的接口模型。
(3)分布式。Java是面向网络的语言,通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其他对象。
(4)安全性。一切对内存的访问都必须通过对象的实例来完成,有效的防止黑客使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了由于指针操作失误导致的程序或系统崩溃。
(5)可移植性。与平 台无关的特性使Java程序可以被移植到不同软硬件平台的计算机上,Java自身的类库也实现了与不同平台的接口,使这些类库更容易移植。
(6)高性能。Java字节码的设计可以很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
(7)支持多线程。多线程机制使应用程序能够并发地执行,同步机制又保证了对共享数据的正确操作。通过使用多线程,程序员可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
三、Java的运行机制
1、Java虚拟机
Java虚拟机(JVM)可以理解成一个以字节码为机器指令的CPU。首先,Java编译程序将后缀名为.java的Java源程序编译为JVM可执行的代码,运行JVM字节码的工作则由解释器来完成。运行过程分代码的装入、校验和执行三步进行:装入代码的工作由类装载器完成,类装载器负责装入一个程序运行所需要的所有代码;字节码校验器负责代码的校验;解释器负责代码的执行。每种类型的操作系统都有一种对应的JVM,JVM屏蔽了底层操作系统的差异,使Java程序能够做到“一次编译,到处执行”。
2、垃圾收集器
Java垃圾收集器能够自动回收垃圾,即运行时无用对象占据的内存空间。Java语言通过提供一种系统级线程来自动跟踪程序运行时存储空间的分配情况,并在JVM空闲时检查并释放那些可被释放的存储空间。在Java中,对象一旦被创建就会在堆区中分配一块内存,而当对象不再被程序引用时,它就变成一个“垃圾”,所占用的堆空间可被回收以便腾出来给后续的新对象使用。Java垃圾收集器能断定哪些对象不再被引用,并且能够把它们所占用的堆空间释放出来。
Java基础学习分享的更多相关文章
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- java基础学习总结——开篇
java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- java基础学习总结——java环境变量配置(转)
只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
随机推荐
- 安装sql server 2008 R2出现 创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.setter
造成这个原因是由于先装了VS(我之前安装的是vs2012)开发环境造成的,需要删除 路径为 C:\Users\Administrator\AppData\Local\Microsoft_Corpora ...
- 数据库 'tempdb' 的事务日志已满。若要查明无法重用日志中的空间的原因
最常的做法: --1.清空日志 DUMP TRANSACTION tempdb WITH NO_LOG --2.截断事务日志: BACKUP LOG tempdb WITH NO_LOG --3.收缩 ...
- jquery获取当前时间并且格式化
Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1 ...
- Java 8 集合不完全一览
JDK 8 List 名称 线程安全 数据结构 允许 null 默认初始容量 扩容策略 备注 ArrayList 不安全 数组 允许 10 1.5 * old LinkedList 不安全 双链表 允 ...
- C#第八节课
for的穷举迭代.while.do while using System;using System.Collections.Generic;using System.Linq;using Syste ...
- #MySQL数据库无法远程访问的问题
在 Ubuntu上装了mysql,因为项目的数据库是mysql,将项目放在tomcat里面webapp下面,一直启动不成功.本来一直以为是jdbc驱动问题,后来发现不是. 感谢!!http://blo ...
- linux -- 扩容 /home 空间( xfs文件系统分区扩容指定挂载点)
问题: /home空间容量不够使用,扩容卷组,扩容挂载点 方法: 1. 确认有可用的物理磁盘 fdisk -l -- 查看磁盘信息 df -h -- 查看当前挂载信息 vgs -- 查看当前卷组信息 ...
- jQuery cxSelect 联动下拉菜单
插件简介 cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市.商品分类等联动菜单. 列表数据通过 AJAX 获取,也可以自定义,数据内容使用 JSON 格式. 同时兼容 Zepto ...
- Django admin(四)一些有用定制
原文:https://www.cnblogs.com/linxiyue/p/4075048.html Model实例,myapp/models.py: 1 2 3 4 5 6 7 8 9 10 11 ...
- cnblogs正式启用
额,因为最近发现CSDN越来越过分了...现在连数学公式都显示错字体了--于是决定把博客搬至cnblogs. Markdown 测试 \(\frac{-b\pm \sqrt{b^2-4ac}}{2a} ...