Java是什么

概述

java是一种面向对象编程语言,不过经过多年的发展,现在已经演变为了一套强大的技术体系。Java设计者们将Java划分为3种结构独立但却彼此依赖的技术体系分支,它们分别对应着不同的规范集合和组件:

  • Java SE(标准版):主要活跃在桌面领域,主要包含了Java API组件;
  • Java EE(企业版):主要活跃在企业级领域,除了Java API组件外,还有Web组件、事务组件、分布式组件、EJB组件、消息组件等等,综合这些技术,开发人员完全可以构建出一个具备高性能、结构严谨的企业级应用,并且Java EE 也是用于构建SOA(面向服务架构)的首选平台;
  • Java ME(精简版):主要活跃在嵌入式领域,精简是因为它仅保留了Java API中的部分组件以及适应设备的一些特有组件;

jdk主要功能变更

  • 1.5

    • 泛型
    • 增强循环,可使用迭代方式
    • 自动装箱拆箱
    • 类型安全的枚举
    • 可变参数
    • 元数据(注解)
  • 1.6
    • 继承Web Services
    • 脚本语言支持
    • 可拔插注解
    • Java Compiler API
    • JDBC 4.0API
  • 1.7
    • switch中使用字符串
    • 在创建泛型对象时应用类型推断
    • 在一个语句块中捕获多种异常
    • 支持动态语言
    • 数值类型可以用二进制字符串表示
    • null值自动处理
  • 1.8
    • Lambda表达式(允许把函数作为一个方法的参数)
    • 方法引用(与lambda联合使用,直接引用已有Java类的方法或构造器)
    • 接口有一个默认的实现方法
    • Stream API
    • Date Time API(加强对日期与时间的处理)
    • Optional(用于解决空指针异常)
    • Nashorn,JavaScript引擎
    • 详细参考
  • 1.9
    • 模块系统(包的容器)
    • JShell(交互式编程环境)
    • HTTP2客户端
    • 改进的Javadoc
    • 多版本兼容JAR包
    • 集合工厂方法
    • 私有接口方法(可以使用 private 访问修饰符在接口中编写私有方法)
    • 进程API
    • 改进钻石操作符
    • 多分辨率图片API
    • 轻量级JSON API
    • 响应式流
    • 详细参考

JVM、JRE、JDK

JVM:Java Virtual Machine,即Java虚拟机,java程序是运行在Java虚拟机上面的,不同平台有自己的虚拟机,因此java代码可以跨平台使用;详细看这篇

JRE:Java Runtime Environment,即Java运行环境,包含了JVM和Java核心类库,它只是运行环境,没有任何开发工具;

JDK:Java Development Kit,即Java开发工具包,它包含了JRE、Java各种类库以及工具。jdk和jre的bin目录最明显的区别就是:只有jdk文件下才有javac;

具体关系图


为什么用Java

Java的特点

简单

  1. Java是C++的一个变种,但是摒弃了C++中复杂又容易引发程序错误的地方,如指针和内存管理;
  2. Java本身提供了丰富的类库,简化开发;

面向对象

  1. 支持静态和动态风格的代码继承以及重用;
  2. Java还包括一个类的扩展集合,分别组成各种程序包

分布式

  1. Java包括一个支持HTTP和FTP等TCP/IP协议的子库,因此Java程序可打开并访问网络上的对象,访问方式与访问本地文件系统几乎相同;

健壮

  1. Java致力于检查程序在编译和运行时的错误,类型检查能帮助检查出许多早期出现的错误;
  2. Java自动操纵内存减少了内存出错的可能性;
  3. Java实现了真数组,避免了覆盖数据的可能;

安全

  1. 编译时数据类型检查和自动内存管理使代码更健壮,减少内存损坏和漏洞;
  2. 字节码验证可确保代码符合JVM规范并防止恶意代码破坏运行时环境;
  3. 类加载器可防止不受信任的代码干扰其他Java程序的运行;
  4. 基于一个动态、可扩展、基于标准、可互操作的安全架构,内置加密、身份验证授权、公共密钥基础架构等安全特性;

平台无关性

  1. Java源代码和字节码与机器无关,因此字节码文件能运行于不同的平台,实现一次编译,处处运行。
  2. 与机器有关的是JVM,JVM是建立在硬件和操作系统之上,实现Java字节码代码的解释执行功能,提供不同平台的接口;

其实Java真正强大的地方是因为有着众多的技术拥护者和开源社区的支持,使Java无时不刻都保持着最充沛的体力与思维,驱动Java发展

Java的缺点

  1. 内存操作自动化限制;
  2. 解释型语言,运行效率较低;
  3. 取消了指针操作,不够其他语言那样灵活方便;

怎么使用Java

安装与配置

(Mac用户看这个 -> Mac安装Java

  1. JDK使整个Java的核心,开始先-> 下载jdk
  2. 下载安装完成后需要配置环境变量:
    1. 此电脑→右键→属性→高级系统设置→环境变量
    2. 新建一个变量名为“JAVA_HOME”的系统变量,变量值为jdk安装目录(x:\xx\jdkxx)
    3. 新建一个变量名为“CLASSPATH”,变量值为“ %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ”;
    4. Path系统变量中,添加“ %JAVA_HOME%\bin ”和“ %JAVA_HOME%\jre\bin ”这两个系统变量
  3. 验证安装
    1. 保存后打开命令行窗口;
    2. 分别输入java和javac,都正常显示则代表成功安装;

开发工具

开发Java通常使用两种工具,选一个点击进行安装,当然也可以选择其他IDE:

第一个Java程序

  1. 打开代码编辑器,复制以下代码:
public class HelloWorld {
/* 第一个Java程序
* 它将打印字符串 Hello World
*/
public static void main(String []args) {
System.out.println("Hello World"); // 打印 Hello World
}
}
  1. 保存为HelloWorld.java文件;
  2. 打开cmd窗口,进入目标文件所在文件夹位置;
  3. 输入 javac HelloWorld.java 进行编译;
  4. 无误后输入 java HelloWorld 即可运行;

基本语法

注释

行级注释:// xxx

块级注释:/* xxx */

文档注释:/** xxx */

标识符

  • 英文
  • 数字
  • 下划线
  • 美元符

标识符规则:

  1. 不能数字开头
  2. 不能用关键字
  3. 遵循驼峰法则
  4. 尽量见名知意

数据类型

基本数据类型:

  • 整数 —— byte、short、int、long
  • 浮点数 —— float、double
  • 字符 —— char
  • 布尔型 —— boolean

引用数据类型:

  • 数组
  • 类(String也在其中)
  • 接口

数据类型的转换

根据字节数由小到大排序:

  1. byte ——占用1字节,取值:-128~127(2^7)
  2. short ——占用2字节,取值:-32768~32767(2^15)
  3. int ——占用4字节,取值:-2147483648~2147483647(2^31)
  4. float ——占用4字节,取值:-3.4e+38 ~ 3.4e+38
  5. long ——占用8字节,取值:-9223372036854774808~9223372036854774807(2^63)
  6. double ——占用8字节,取值:-1.7e+308 ~ 1.7e+308

显式转换(强转):大范围转到小范围,要在等号右边加上类型

隐式转换(自动):小范围转到大范围

变量

变量和引用存储在栈中

  • 局部变量
  • 类变量(静态变量)
  • 成员变量(非静态变量)

常量

常量存储在常量池中

  • 整形常量
  • 浮点数常量
  • 字符型常量
  • 布尔型常量
  • 字符串常量

Java符号以及优先级

篇幅太长,引用其他大神博客进行参考


Java 概述及安装使用的更多相关文章

  1. 1.Java概述、安装及环境搭建

    1. 前言 1.1 学习方法 1. 学会学习的方法 2. 学会独立解决问题 3. 主动的学习而不是被动的接受 4. 知识的大家的,能力才是自己的 1.2 推荐博客 当代程序员都应该养成写博客.看博客的 ...

  2. java基础(1):java概述、jdk的安装、环境变量的配置、helloworld案例

    1. Java开发环境搭建 1.1 java概述 众所周知Java是一门编程语言,编程语言就是用来编写软件的.那么使用Java到底能用来编写什么软件呢?你所熟知的很多软件都可以用Java来编写,例如: ...

  3. Java概述

    Java概述 一.前奏(常见的DOS命令) dir:列出当前目录下的文件以及文件夹 md:创建目录(文件夹) rd:删除目录 cd:进入指定目录 cd..:退出当前目录,返回到上一级目录 cd\:退回 ...

  4. 1.1 Java概述上

    1.1 Java概述 Java是一种编程语言,它提供了一个同时用于程序开发 应用和部署的环境.Java语言主要定位于网络编程,使得程 序可以最大限度地利用网络资源. 1.2 Java语言的特点 1.跨 ...

  5. 从java的开始,java概述,java配置环境变量

    一.java开发入门 java 概述   Java划分为三个技术平台:JavaSE(标准版,含Java基础类库),JavaEE(企业版,技术平台),JavaME(小型版,小型产品.嵌入式设备) Jav ...

  6. JAVA基础知识(一)—JAVA概述

    JAVA概述 1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...

  7. Java概述和项目演示

    Java概述和项目演示 1. 软件开发学习方法 多敲 多思考 解决问题 技术文档阅读(中文,英文) 项目文档 多阅读源码 2. 计算机 简称电脑,执行一系列指令的电子设备 3. 硬件组成 输入设备:键 ...

  8. Java基础(Java概述、环境变量、注释、关键字、标识符、常量)

    第1天 Java基础语法 今日内容介绍 u Java开发环境搭建 u HelloWorld案例 u 注释.关键字.标识符 u 数据(数据类型.常量) 第1章 Java开发环境搭建 1.1 Java概述 ...

  9. java概述和java环境按照,java开发体验

    java概述: Java的发展可以归纳如下的几个阶段. (1)第一阶段(完善期):JDK 1.0 ( 1995年推出)一JDK 1.2 (1998年推出,Java更名为Java 2): (2)第二阶段 ...

随机推荐

  1. Java -- 内部类, 成员内部类,局部内部类,匿名内部类,闭包和回调, 枚举类

    1. 成员内部类分为  静态内部类 和 非静态内部类. 非静态内部类 和 外部类的其他成员一样处理, 非静态内部类可以访问外部类的private的属性,而外部类不能访问非静态内部类的属性,需要实例非静 ...

  2. form表单提交信息的方式

    form表单提交信息的方法有两种,一种是get,一种是post.get提交的数据是在地址栏上提交,一般隐私数据不会选择这样方式.地址栏上只能提交字符. 如果使用的是post提交,那么信息都在消息正文中 ...

  3. Python3之hashlib模块

    Python3之hashlib   简介: 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法.在python3中已 ...

  4. SWFObject是什么

    一:简介: SWFObject是一个用于在HTML中方便插入Adobe Flash媒体资源(*.swf文件)的独立.敏捷的JavaScript模块.该模块中的JavaScript脚本能够自动检测PC. ...

  5. hadoop_异常_01_ Unable to determine address of the host-falling back to "localhost" address java.net.UnknownHostException: rayner

    一.异常现象 安装好hadoop之后,执行格式化namenode命令时,抛出以下异常: // :: WARN net.DNS: Unable to determine local hostname - ...

  6. 使用myeclipes制造属于自己的jar

    选定你需要在jar中包含的package或者class 步骤1:右键export导出, 步骤2:导出类型为java --JRE  file. 步骤3:直接finish即可完成 如果希望你的jar带源码 ...

  7. ADO:连接,执行语句与关闭(sql server数据库)

    一,身份验证: sql server数据库连接身份验证有两种:windows身份验证和SQL Server身份验证 windows验证:是使用windows的安全子系统对用户连接进行有效性验证.(个人 ...

  8. 麻省理工《C内存管理和C++面向对象编程》笔记---第一讲:认识C和内存管理

    最近一年都在用.net和Java,现在需要用C了.昨天看到博客园首页的麻省理工开放课程,就找来看看,正好复习一下.这门<C内存管理和C++面向对象编程>不是那种上来就变量,循环的千篇一律的 ...

  9. Poj 2299 Ultra-QuickSort(归并排序求逆序数)

    一.题意 给定数组,求交换几次相邻元素能是数组有序. 二.题解 刚开始以为是水题,心想这不就是简单的冒泡排序么.但是毫无疑问地超时了,因为题目中n<500000,而冒泡排序总的平均时间复杂度为, ...

  10. wpf staticresource 是不允许向前引用(forward reference)的

    不允许向前引用(forward reference)在C/C++中中很常见,即在语法上,未定义变量.类之前,不能使用. 没想到wpf中的wpf staticresource也遵循这种规则.资源字典中, ...