初识java

简介: 初识java

目录

1.Java语言简洁、发展概述、语言优势、与c/c++区别


1.1Java是什么?


1.2 Java语言重要性


1.2.1. 语言广泛使用程度


1.2.2 工作领域


1.3 Java语言发展简史


1.4 Java语言特性


2.初始Java程序入口之main方法


 2.1 运行Java程序


3. 注释、标识符、关键字


 3.1 基本规则  


 3.2 注释规范


 3.3.标识符


 3.4 关键字


1.Java语言简洁、发展概述、语言优势、与c/c++区别


1.1Java是什么?


Java 是一种优秀的程序设计语言 ,它具有令人赏心悦目的语法和易于理解的语义。

image.png      image.png

不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和 跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。


1.2 Java语言重要性


1.2.1. 语言广泛使用程度

下图数据来自于TIOBE编程语言社区的排行榜,java常年占据语言排行榜,是近些年最火的编程语言之一。

image.png

TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经 验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 Google、MSN、Yahoo!、 Wikipedia、YouTube 以及 Baidu 等)进行计算。


注意:上述排名不能说明那个语言好,那个语言不好,每门编程语言都有适应自己的应用场景


1.2.2 工作领域

Java语言目前在IT领域的应用是非常广泛的,掌握Java语言可以从事不少IT行业的相关开发岗位,具体包括:


企业级系统

比如大型复杂的企业级软件系统, Java 的安全机制以及跨平台性的优势,其在分布式系统领域开发中有广泛应用,涉及到金融、电信、交通、电子商务、ERP 系统等。

Web 开发领域

Java 语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较好的扩展性,Java 语言一直是大型互联网平台的重要解决方案。

android 平台应用

Android 是一种智能手机操作系统, Java 是一门非常流行的编程语言。 Android 上的应用程序就是大多是用Java 编写的, Android 的 SDK 大部分就是直接将 Java SDK 翻译过来的,所以具有 Java 基础,也可以快速上手Android 开发。

大数据平台开发

大数据相关的各类框架,比如: Hadoop 、 spark 、 storm 、 flink 等,以及各种中间件 flume 、 kafka 、

sqoop 等,这些框架以及工具等大多数是用 Java 语言开发的,随着大数据技术的落地应用, Java 在大数据领域的应用前景也是比较广阔的。

       除上述开发领域外,Java在游戏领域、人工智能领域、科学计算领域、嵌入式领域也有一定的应用。因此学好 Java,将来就业的选择也会非常广泛。



1.3 Java语言发展简史

image.png

Java 语言源于 1991 年 4 月, Sun 公司 James Gosling 博士 领导的绿色计划 (Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品( 如机顶盒、冰箱、收音机等 ) 上运行的程序架构。这个就是 Java 的前身: Oak ( 得名与 Java 创始人 James Gosling 办公室外的一棵橡树 ) ,但由于这些智能化家电的市场需求没有预期的高,Sun 公司放弃了该项计划。随着 1995 年代互联网的发展 , Sun 公司看见 Oak 在互联网上应用的前景,于是改 造了 Oak ,于 1995 年 5 月以 Java 的名称正式发布,并提出 “Write once, Run anywhere" 的口号 。

image.png

1.4 Java语言特性

简单性:Java 语法是 C++ 语法的一个 “ 纯净版本 ” ,相当于对 C++ 做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java 开发环境远远超出大多数其他编程语言的开发环境。


面向对象:

什么是面向对象?

在 Java 的世界里,一切皆对象 。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头...

Java 的面向对象特性与 C++ 旗鼓相当,与 C++ 的主要不同点在于多重继承。在 Java 中,取而代之的是更简单的接口概念。而且与C++ 相比, Java 提供了更丰富的运行时自省功能。


分布式

Java有丰富的例程库,用于处理像HTTPFTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。


健壮性:

Java 与 C++ 最大的不同在于 Java 采用的指针模型可以消除重写内存和损坏数据的可能性(对于曾经花费几个小时来检查由于指针bug 而引起内存冲突的人来说,一定很喜欢 Java 的这一特性)。不仅如此, Java 编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。


image.pngimage.pngimage.png

安全性:

Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java就设计成能够防范常见的各种攻击。


体系结构中立:

  编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译 后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。这就是为什么可以:“Wrice once,Run anywhere”   。  


可移植性:

  与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。


解释性:

Java 为了实现与平台无关,自己维护了一套基于栈架构的指令集, Java 源代码经过编译之后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java 程序在执行时,Java 解释器会逐条的将字节码文件中的指令翻译成 CPU 的指令集。


高性能:

边解释边执行,垃圾会说等导致了 Java 代码运行效率偏低,近年来 JVM 也在不断的优化,比如: JIT( 即时编译器) ,热点代码探测,让 Java 程序的执行效率大幅提高,在有些场合不亚于 C/C++ 。


多线程:

Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。


动态性:

JavaC/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单


因此:Java不仅仅是一门编程语言,也是一个由一些列计算机软件和规范组成的技术体系 


2.初始Java程序入口之main方法
public class test {
    public static void main(String[] args) {
        System.out.println("hello");
    }
}

如上展示的就是最简单的一个Java程序。可以说,Javamain方法应该是当前主流编程语言中最“的。


通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:


1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。

2.类:类中带有一个或多个方法。方法必须在类的内部声明。

3.方法:在方法的花括号中编写方法应该执行的语句。

总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。

注意:在一个源文件中只能有一个 public 修饰的类,而且源文件名字必须与 public 修饰的类名字相同 。

好了,代码编写完了,如何让它 “ 运行 ” 起来呢?


2.1 运行Java程序

Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。


image.png


注意:在运行 Java 程序前,必须先安装好 JDK(Java Development Kit 即 Java 开发工具包 ) , JDK 里面就包含了 javac 和java工具, Java 程序最终是在 JVM(Java 虚拟机 ) 中运行的。


JDK,JRE,JVM之间的关系是什么呢?

JDK (Java Development Kit):Java 开发工具包,提供给 Java 程序员使用,包含了 JRE ,同时还包含了编译器javac 与自带的调试工具 Jconsole 、 jstack 等。

JRE (Java Runtime Environment):Java 运行时环境,包含了 JVM , Java 基础类库。是使用 Java 语言编写程序运行的所需环境。

JVM : Java 虚拟机,运行 Java 代码


image.png

编写和运行第一个 Java 程序时,可能会遇到的一些错误:

1. 源文件名后缀不是 .java

2. 类名与文件名不一致

3. main 方法名字写错: mian

4. 类没有使用 public 修饰

5. 方法中语句没有以分号结尾

6. 中文格式的分号

7. JDK 环境没有配置好,操作系统不能识别 javac 或者 java 命令


3. 注释、标识符、关键字

注释是为了让代码更容易被读懂而附加的描述信息。 不参与编译运行 , 但是却非常重要。 时刻牢记 !


3.1 基本规则

Java中的注释主要分为以下三种:

单行注释: // 注释内容(用的最多)

多行注释: /* 注释内容 */ (不推荐)

文档注释: /** 文档注释 */ (常见于方法和类之上描述方法和类的作用 ) ,可以被 javadoc 工具解析,生成一套以网页文件形式体现的程序说明文档

注意:

1. 多行注释不能嵌套使用

2. 不论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释信息。


3.2 注释规范

1. 内容准确 : 注释内容要和代码一致 匹配 , 并在代码修改时及时更新。

2. 篇幅合理 : 注释既不应该太精简 , 也不应该长篇大论。

3. 使用中文 : 一般中国公司都要求使用中文写注释 , 外企另当别论。

4. 积极向上 : 注释中不要包含负能量 。


3.3.标识符

在上述程序中, Test 称为类名, main 称为方法名,也可以将其称为标识符,即: 在程序中由用户给类名、方法名或 者变量所取的名字

硬性规则:

标识符中可以包含:字母、数字以及 下划线和$ 符号等等。

注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写

软性建议:

类名:每个单词的首字母大写(大驼峰)。

方法名:首字母小写,后面每个单词的首字母大写(小驼峰)。

变量名:与方法名规则相同。

下面那些标识符是合法的?

A : class B : HelloWorld C : main D : 123abc E : ARRAY_SIZE F: $name G: name:jim

答案:BCEF


3.4 关键字    image.png

通过观察上述程序可以发现, public  class 以及 static 等颜色会发生变化,将这些具有特殊含义的标识符称为关键字。即:关键字是由 Java 语言提前定义好的,有特殊含义的标识符,或者保留字 

注意:用户不能使用关键字定义标识符。


Java中关键字有很多,这里给大家列出来一部分:

用于定义访问局限修饰符的关键字

private protected public  

用于定义类、函数,变量修饰符的关键字

abstract final static sychronized

用于定义类与类之间关系的关键字

extends implements  

用于定义建立实例及引用实例,判断实例的关键字

new this super instanceof

用于异常处理的关键字

try catch finally throw throws

用于包的关键字

package import  

其他修饰符关键字

native strictfp transient volatile assert



相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
8月前
|
分布式计算 JavaScript Java
学JAVA,从现在开始-day01
每日记录自己学习java的心得和体会~
|
11月前
|
Java Unix Linux
JAVA|什么是Sdkman
JAVA|什么是Sdkman
353 0
|
12月前
|
存储 Java
|
算法 Java
棋盘覆盖问题(Java)
棋盘覆盖问题(Java)
140 0
棋盘覆盖问题(Java)
|
Java 程序员 编译器
java初识
java初识
153 0
java初识
|
Java 数据安全/隐私保护
java23-if..else
java23-if..else
91 0
java23-if..else
|
Java
java24-if..else...if
java24-if..else...if
78 0
java24-if..else...if
|
数据安全/隐私保护 Android开发
java32-巩固练习
java32-巩固练习
79 0
java32-巩固练习
|
Java
Java常见的坑(二)
你猜上述程序输出的是什么? 是 ABC easy as 123 吗? 你执行了输出操作,你才发现输出的是 ABC easy as [C@6e8cf4c6 ,这么一串丑陋的数字是什么鬼? 实际上我们知道字符串与任何数值的相加都会变为字符串,上述事例也不例外, numbers输出其实实际上是调用了Object.toString()方法,让numbers转变为'[c' + '@' + 无符号的十六进制数。
53 0
|
小程序 Java 编译器
关于Java
Java功能强大且简单
375 0
关于Java