本文来自博客园,作者:{张果},转载请注明原文链接:{JavaSE学习总结(一)——java基础}

一、Java是什么

Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台。Java 是一项用于开发应用程序的技术,可以让 Web 变得更有意思和更实用。有许多应用程序和 Web 站点只有在安装 Java 后才能正常工作,而且这样的应用程序和 Web 站点日益增多。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!

java是当前最流行,应用最广泛的编程语言。点击查看tiobe排行

1.2、Java相关网站

Oracle英文:https://www.oracle.com/index.html

Oracle中文:http://www.oracle.com/cn/index.html

Java中文:https://www.java.com/zh_CN/

1.3、发展历史

20世纪90年代,硬件领域出现了单片式计算机系统,根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。

1995年,并将Oak更名为Java。互联网的蓬勃发展给了Oak机会,Oak也是一种精简的语言,程序非常小,适合在网络上传输。

1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。

1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。

1999年6月,Sun公司发布了第二代Java平台(简称为Java2)。

1999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。
2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。

2001年9月24日,J2EE1.3发布。

2002年2月26日,J2SE1.4发布。

2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。

2005年6月,在Java One大会上,Sun公司发布了Java SE 6。

2006年11月13日,Java技术的发明者Sun公司宣布,将Java技术作为免费软件对外发布。

从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改

2009年,甲骨文公司宣布收购Sun。

2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。

2011年,Java7正式发布。

2014年,甲骨文公司发布了Java8正式版。

1.4、Java组成

JavaME(Java Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境

JavaSE(Java Standard Edition,Java 2平台的标准版),应用于桌面环境,它是其它Java平台的基础 C/S

JavaEE(Java Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器 B/S

JavaSE平台:

二、Java能做什么

Java可以编写桌面应用程序(C/S Client/Server)、Web应用程序(B/S Browser/Server)、分布式系统和嵌入式系统应用程序等。Java最主要的作用是为各种应用提供强大的后台服务。

2.1、开发面向Internet的B/S结构应用程序

淘宝网、阿里巴巴、易趣网、中国移动网上营业厅

2.2、开发面向移动端的手机应用程序 

Android,各种Android下的App

2.3、开发面向桌面的C/S应用程序 

银行软件、商场结算软件、QQ 、飞信

三、Java语言的特点

3.1、简单

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。

3.2、纯面向对象

Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏 ;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。

3.3、分布式

Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议,用户可以通过 URL地址在网络上很方便地访问其它对象。

3.4、健壮

Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时出现不匹配问题。

3.5、安全性

用于网络、分布环境下的 Java必须要防止非法的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊 ”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。Linux

3.6、体系结构中立

Java解释器生成与体系结构无关的字节码指令,只要安装了 Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

3.7、可移植性

与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由 Java语言实现的,Java运行时系统由标准C实现,这使得Java 系统本身也具有可移植性。

3.8、解释执行

Java解释器直接对Java的字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。

3.9、高性能

和其它解释执行的语言(例如BASIC)不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。

3.10、多线程

多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。

3.11、动态性

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。另外, Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

3.12、开源

3.13、免费

四、第一个Java程序

JDK (Java Development Kit)是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。

JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

JRE为Java Runtime Environment的简称,Java Runtime Environment(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)--编译器、调试器和其它工具。JRE需要辅助软件--Java Plug-in--以便在浏览器中运行applet。

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。平台的不同主要体现硬件(x64,x32,mac,arm)与软件(windows,linux,unix,ios,android)

4.1、安装JDK并安装

1)、下载JDK

地址:http://www.oracle.com/cn

http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-windows-x64.exe

开始->运行->cmd->java -version 如果可以看到如下界面,说明已安装成功

java -version用于查看java版本

4.2、配置环境变量

如果使用安装包,默认会添加环境变量,如果使用的是绿色版本的JDK则需要手动配置环境变量

4.2.1、手动添加

右键点击我的电脑->属性->高级->环境变量,修改下面系统变量那个框里的值就行了。

a)、添加JAVA_HOME变量

JAVA_HOME是一个变量,一次定义可以反复引用,引用办法%JAVA_HOME%

b)、在Path中增加内容

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

注意以分号隔开

c)、增加CLASSPATH

系统变量->新建CLASSPATH变量

变量值填写.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一个点)

4.2.2、批处理添加一

新建一个jdk.bat批处理文件,注意路径不要空格与中文

@echo off

rem  TODO:设置java环境变量

rem 设置java的安装路径,可方便切换不同的版本
set javaPath=E:\java\program\jdk1.7.0_25\ rem 如果有的话,先删除JAVA_HOME
wmic ENVIRONMENT where "name='JAVA_HOME'" delete rem 如果有的话,先删除ClASS_PATH
wmic ENVIRONMENT where "name='CLASS_PATH'" delete rem 创建JAVA_HOME
wmic ENVIRONMENT create name="JAVA_HOME",username="",VariableValue="%javaPath%" rem 创建CLASS_PATH
wmic ENVIRONMENT create name="CLASS_PATH",username="",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;" rem 在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串
call set xx=%%Path:%JAVA_HOME%=%% rem 将返回显的字符重新赋值到path中
wmic ENVIRONMENT where "name='Path' and username=''" set VariableValue=%xx% pause

4.2.3、批处理添加二

echo. 运行本文件前请将本放置在java_home目录下,如 C:\Program Files\Java\jdk1.7.0

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0
@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CLASSPATH /t reg_sz /d ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar;" /f
@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d "%path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
pause

*运行本文件前请将本放置在java_home目录下,如 C:\Program Files\Java\jdk1.7.0

4.3、编辑源代码

4.3.1、在DOS下创建一个源代码文件

4.3.2、直接在windows下创建一个源代码文件

在目标位置创建一个文本文件,重命令为Hello.java

//定义一个名为Hello的类
public class Hello{
//定义主方法,程序入口
public static void main(String[] args){
//向控制台输出字符信息并换行
System.out.println("Hello Java");
}
}

注意:

a)、public类名要与文件名一致

b)、严格区分大小写

c)、一行语句结束需要以分号界定

4.4、编译运行

命名用javac 文件名可以编译源代码为字节码,运行编译好的字节码:

4.5、运行机制解析

java源文件的后缀名为:.java,公有的类名与文件名相同

编译后的后缀名为:.class,也称为字节码文件

五、使用IDE开发Java程序

java集成开发环境(IDE)有许多如:Eclipse、MyEclipse、IDEA、NetBeans、Jdeveloper等

Eclipse:当前使用人数最多,开源,免费,以前是IBM的后来捐给了Apache

MyEclipse:Eclipse的演化版本,功能比Eclipse强大,但收费

IDEA:IntelliJ IDEA比Eclipse的好评多,收费,Android开发现在使用该IDE

Eclipse下载地址:https://www.eclipse.org/

方法二:(推荐)

打开:http://www.eclipse.org/downloads/eclipse-packages/

点击64位后:

可以选择国内的镜像(Mirror)

直接将压缩包放到一个没有中文,没有空格,没有特殊字符的目标下

打开eclipse

最好发送快捷方式到桌面,避免每次打开文件夹

六、下载

JDK8网盘下载:http://pan.baidu.com/s/1nuSuIKT

JDK8官网下载:http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-windows-x64.exe

Eclipse下载:http://pan.baidu.com/s/1c2koakg (绿色版)

JDK7官方下载:http://www.oracle.com/technetwork/cn/java/javase/downloads/java-se-jdk-7-download-432154-zhs.html

视频下载:https://pan.baidu.com/s/1nuTIe7n 密码: 374d

B站在线看:http://www.bilibili.com/video/av9219224/

JavaSE学习笔记(一)----java基础的更多相关文章

  1. Java学习笔记之—Java基础

    将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信

  2. JavaSE 学习笔记之Java语法基础(二)

    1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...

  3. Java 学习笔记(1)——java基础语法

    最近抽时间在学习Java,目前有了一点心得,在此记录下来. 由于我自己之前学过C/C++,而Java的语法与C/C++基本类似,所以这一系列文章我并不想从基础一点点的写,我想根据我已有的C/C++经验 ...

  4. Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...

  5. Java基础学习笔记七 Java基础语法之继承和抽象类

    继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 例如公司中的研发部员工和维护部员工都属于员工, ...

  6. Java基础学习笔记八 Java基础语法之接口和多态

    接口 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”.接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义 ...

  7. JavaSE 学习笔记之Java概述(一)

    一.Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platfor ...

  8. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  9. Java基础学习笔记四 Java基础语法

    数组 数组的需求 现在需要统计某公司员工的工资情况,例如计算平均工资.最高工资等.假设该公司有50名员工,用前面所学的知识完成,那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻 ...

  10. Java基础学习笔记六 Java基础语法之类和ArrayList

    引用数据类型 引用数据类型分类,提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类.Random类.我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner ...

随机推荐

  1. 关于mysql在linux(deb系)遇到的问题及解决方法

    前言 当我在树莓派上安装 mysql 数据库的时候,默认安装的是mariadb 数据库,不过没什么区别(在我看来),然后就是闹心的解决各种问题了 1. mysql 在root用户下无密码登录问题 这个 ...

  2. Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.

    $git push origin master 报错: Warning: Permanently added the RSA host key for IP address '192.30.253.1 ...

  3. Kubernetes(K8S) 配置管理-ConfigMap 介绍

    作用:存储不加密数据到 etcd,让 Pod 以变量或者 Volume 挂载到容器中 场景:配置文件 创建配置文件 redis.properties redis.host=127.0.0.1 redi ...

  4. Linux创建定时删除日志任务

    定时删除3天前的所有日志文件: 1.例:脚本对应的要删除的目录为/home/logs在home目录创建文件clearLogFiles.sh:cd /homevim clearLogFiles.sh写入 ...

  5. Dart语言简介

    简单介绍Dart语言 Dart是一种针对客户优化的语言,亦可在任何平台上快速开发的应用陈旭. 目标是为多平台开发提供最高效的变成语言,并为应用程序框架搭配了领会的运行时执行平台. Dart特点 Dar ...

  6. 使用sanic框架实现分布式爬虫

    bee_server.py from sanic import Sanic from sanic import response from urlpool import UrlPool #初始化url ...

  7. Redis的数据持久化

    介绍 Redis 的数据持久化方案 Redis 的数据持久化主要有两大机制,AOF 日志和 RDB 快照. AOF 持久化是通过保存 Redis 服务器所执行的写命令来记录数据库状态. RDB 持久化 ...

  8. [编程基础] C++多线程入门8-从线程返回值

    原始C++标准仅支持单线程编程.新的C++标准(称为C++11或C++0x)于2011年发布.在C++11中,引入了新的线程库.因此运行本文程序需要C++至少符合C++11标准. 8 从线程返回值 8 ...

  9. [OpenCV实战]20 使用OpenCV实现基于增强相关系数最大化的图像对齐

    目录 1 背景 1.1 彩色摄影的一个简短而不完整的历史 1.2 OpenCV中的运动模型 2 使用增强相关系数最大化(ECC)的图像对齐 2.1 findTransformECC在OpenCV中的示 ...

  10. python之路22 hashlib、subprocess、logging模块

    hashlib加密模块 hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 信息摘要算法(Message Digest Algorithm)实现了一个公共的. ...