抓哇咖啡,编程届“最好”的咖啡(Java入门)

按照我写博客的习惯,我总喜欢用一些通俗易懂的语言来讲解一些知识。专业性上可能比不上那些专业的博客作者,但我会仅我所能让大家都学会知识。也欢迎各位大佬指点,相互学习进步。

所以关于Java的知识就让我们从这杯咖啡开始

一.趣谈Java

奇迹是没有经过安排的发生,一个偶然便可能改变历史的轨迹。

Java便是如此在偶然间,携带巨大的能量横空问世,在人类IT史上演绎了一场科技大戏。

首先问大家一个问题。Java之父是谁?

Java之父是詹姆斯·高斯林(不是网络上说的某39.9)

Java是在Sun公司由他及其同伴共同创造的。像C语言一样,Java一开始并不是叫Java。最开始詹姆斯是做电子产品的,并且用的语言是C++。但由于后期涉及到互联网开放,使用C++导致编译会稍显繁杂。为了解决这个问题,我们的Java之父和他们的小伙伴们就有了一个想法......

 他们在C++的基础之上创建了一种新的语言:Oak。Oak是简化版的C++,不仅灵活还更适合互联网应用开发。但事与愿违,由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。等到1995年代,互联网获得高速发展,Sun公司改造优化了Oak,就当他们准备以此名发布的时候,发生一件好玩又好笑的事:Oak已经被Sun公司的另一个语言注册商标。

正当一群“秃顶男人”围在一圈讨论该用什么名字来命名这门语言时,注意到桌子上的咖啡,又联想到当时一个盛产咖啡的小岛。于是,一拍即合便有了Java这个名字。在中国,也有了抓哇这个戏称。

二.Java的特点

Java的设计者编写了一个颇有影响力的白皮书,用来结束Java的设计初衷以及完成情况。他们还对Java的语言特性进行组织:

  1. 简单些
  2. 面向对象
  3. 分布式
  4. 健壮性
  5. 安全性
  6. 体系结构中立
  7. 可移植性
  8. 解释性
  9. 高性能
  10. 多线程
  11. 动态性

 详细介绍可参考白皮书官网:https://www.oracle.com/java/technologies/language-environment.html

本文章只是用一些易于理解的方式,同时也会加上官方的解释。但如果是做专业性的研究的朋友,建议可以参考官方解释。 

1.简单性

Java语言是C++语言的“纯净版”,没有像指针这种令人头大的部分,也没有操作符重载,联合等。

虽然Java语言剔除了C++中那些又难使用又不好理解的特性,但设计者在这“偷了懒”,没有修改所有C++中所有不适当的特性。所以,Java也在不断更新进步当中,希望有一天,看过这篇博客的你们也会为Java的发展做出一份贡献。

2.面向对象

来来来,注意了,分配对象了。

不过这个对象可不是你们生活里的男(女)朋友。而是Java里的对象

在Java中,你不仅可以有对象,还可以有无数个对象。

 比如:人、狗、手机、电脑等都是对象。

而所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头,你们看我的文章...

Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。

在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。

3.分布式

对于这个点,嗯......由于本人学识尚浅,只能贴一段官方解释了。

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

4. 健壮性

 如果你曾经学习或者了解过指针相关的知识,你多少会被其所困扰。而Java编译器就能很好的解决这个问题。Java编译器能够监测许多其他语言只在运行过程中才能监测出来的问题。对于像我这种被一个指针bug困扰好几个小时的人来说,这一特性无疑是极好的。

5.安全性

从一开始,Java就设计成能够防范常见的各种攻击:

运行时堆栈溢出。蠕虫和病毒常用的攻击手段。

破坏自己进程空间之外的内存。

未经授权读写文件

 其实说到安全性,Java也是在在一次次调bug和一次次的与黑客的“较劲”中实现的。

这也告诉我们,程序有bug不可怕,你的水平也是在一次次的改bug中提升的。

6.体系结构中立

编译器生成一个体系结构中立的目标文件格式,只要处理器上有Java运行时系统,这些编译型代码就可以在上面运行。

7.可移植性

与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。

在Java当中,数据类型的大小都是固定的。

举例而言:在Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。正因如此,当我们想要移植Java代码时,就会减少很多因为位数而产生的问题。

8.解释性

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

9.高性能

随着技术的不断发展与进步,Java的编译器也在一步步走向完美。举例而言,即时编译器能够监控哪些代码在频繁的运行,编译器就会对这些代码进行优化。

这就跟现在的购物网站一样,如果你多次看统一类型的商品,当你下次再进入时,它会在首页给你疯狂推送。(但这种高性能对应的应该算是商家而不是顾客吧)

10.多线程

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

 11.动态性

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

三.Java开放环境

1.JDK,JRE与JVM

1.1JDK

JDK,英文全称Java Development Kit,JDK是整个Java的核心,是Java程序的开放工具包,其中包括了Java编译器,Java运行工具,Java文档生成工具等。

JDK的安装目录下有六个文件夹,一个src类库源码压缩包以及几个声明文件。

在Java运行过程中真正起作用的是bin,include,lib,jre四个文件夹。

  • bin:最主要的是编译器(javac.exe)
  • include:java和JVM交互用的头文件
  • lib:类库
  • jre:java运行环境

1.2JRE

JRE,英文全称Java Runtime Environment,是Java程序运行时的环境JRE工具。只包含Java运行工具,不包含Java编译工具,同时也包含了JVM和运行时需要的核心类库。

上面我们提到过,JDK目录中有bin和lib这两个文件夹。我们可以将bin看作是jvm,lib则是jvm工作时需要用到的类库。

jvm和lib合在一起就称为jre,当写好的Java程序编写成.class文件时,就需要用到jre里面的Java.exe。

1.3JVM

JVM,英文全称Java Virtual Machine,是Java虚拟机,是JRE的一部分,负责将java程序生成的字节码文件解释成具体系统平台上的机器指令,同时也是Java实现跨平台最核心的部分。

关于虚拟机,我们可以这样理解:它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

1.4三者之间的关系

JDK = JRE + 开发工具集(例如Javac编译工具等)

JRE = JVM + Java SE标准类库

1.5Java开发环境配置

Windows下最简单的Java环境安装指南 - 大博哥VV6 - 博客园 (cnblogs.com)

四. 第一个Java程序

1.编写

public class Main{
    public static void main(String[] args){
        System.out.println("world Hello");
    }
}

这就是Java的最简单的一个程序。

相信部分朋友看完程序后是这个表情。啥啊,这还算最简单的程序?

确实,Java的main方法应该算是当前主流的编程语言中最复杂的一个了。

 别急,让我们把这个程序慢慢“肢解”,一点点的来理解它的特点以及每一部分表示什么意义。

1.1拼写问题

  • Java语言是一门严格区分大小写的语言,如果出现大小写拼写错误,程序将无法运行。

        例如:        

                     正确:class                 错误:Class

                     正确:String                 错误:string

                     正确:System               错误:system

                     正确:main                    错误:mian

  • 标点符号的使用

              不能用中文符号,英文半角的标点符号

              括号要成对出现

 1.2命名问题

在关键字class后面紧跟类名。

对于Java类名的命名,Java的规则较为宽松。

类名必须要以字母开头,后面可以跟着字母或者数字的任意组合。

但需要注意的是,和C一样,Java的类名不能用保留字。

驼峰命名法

类名一般以大写字母开头,如果类名是由多个单词组成,最好将每个单词的开头都大写。

2.运行

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

前面我们提过,JDK的作用是十分重要的,这点在运行时就能很好的体现。

和C语言一样,Java程序的入口是main方法

3.输入与输出

换行输出语句:输出内容,完毕后进行换行,格式如下:

System.out.println(输出内容);

直接输出语句:输出内容,完毕后不做任何处理,格式如下:

System.out.print(输出内容);

4.注释

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

用一端有意思的话来解释注释的重要性:

当一个程序刚写出来时,也许只有你和上帝看得懂

加上注释,你的同事们也能看懂

如果没有注释,一个月后,这段代码只有上帝能看懂了。

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

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

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

文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),可以被javadoc工具

解析,生 成一套以网页文件形式体现的程序说明文档

但需要我们注意的是,注释也不是随便写的,有着一定的规范 

1.当文明人,注释里不要有负能量

2.如果是在中国公司,代码最好都用中文

3.不要长篇大论,也不要过于简单

4.注释的内容要和代码里的内容匹配,在修改代码后注释也要及时更新

5.标识符

标识符是在程序中由用户给类名,方法名或者变量所取的名字。

必须遵守的规则:

标识符中可以包含字母,数字下划线和$符号

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

建议遵守的规则:

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值