【Java基础系列】1- 如何定义程序

本文介绍了Java语言的起源,包括其1995年发布的历史节点和平台发展。重点讲解了Java的特点,如面向对象、简单性和跨平台性,以及运行机制(先编译后解释)。详细指导了Java环境的配置和第一个Java程序的创建。涵盖了包的概念、命名规范和语言规范,如编码风格和标识符命名。
摘要由CSDN通过智能技术生成

1. 什么是程序

为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。

比如:微信app、QQ等

2. Java 的历史与特点

2.1 Java 的历史

  • Sun Microsystems1995年推出的面向对象的程序设计语言,共同创始人的詹姆斯.高斯林(James Gosling)被誉为“Java之父”。
  • 1996年发布JDK 1.0
  • 1998年发布JDK 1.2
    • 平台名称:J2SE(Stadard Edition)J2EE(Enterprise Edition)J2ME(Jicro Edition)
  • 2004年发布JDK 1.5 版本更名:Java 5.0
    • 平台名称:Java SE、Java EE、Java ME
  • 2006年发布Java 6.0
  • 2009年被Oracle收购
  • 2011年由Oracle发布Java 7.0
  • 2014年由Oracle发布Java 8.0
  • 2017年由Oracle发布Java 9.0
  • 2018年由Oracle发布Java 10.0
  • 2018年由Oracle发布Java 11.0

2.2 Java 的语言特点

  • 面向对象(贴近人类思维模式,模拟现实世界,解决现实问题)
  • 简单性(自动内存管理机制、不易造成内存溢出;简化流程处理、语义清晰)
  • 跨平台(操作系统、服务器、数据库)

3. Java 的运行机制

3.1 计算机的执行机制

  • 编译执行:

    • 将源文件编译成平台相关的机器码文件,一次编译,多次执行

      在这里插入图片描述

    • 执行效率高、不可跨平台

  • 解释执行:

    • 将源文件交给不同的平台独有的解释器(现编译现执行)

    • 执行效率低,可以跨平台

      在这里插入图片描述

3.2 Java的执行机制

  • 先编译、再解释:

    • 将源文件编译成字节码文件(平台中立文件.class),再将字节码文件进行解释执行。

    • Java的设计理念:Wirte Once Run Anywhere

      在这里插入图片描述

      JVM:java的虚拟机,在不同的硬件操作系统中模拟相同的环境。

      不同平台的JVM都可以识别*.class文件

3.3 名词解释

  • JVM(Java Virtual Machine)虚拟机:
    • 使用软件在不同操作系统中,模拟相同的环境
  • JRE(Java Runtime Environment)运行环境:
    • 包含JVM和解释器,完整的Java运行环境
  • JDK(Java Development Kit)开发环境:
    • 包含JRE + 类库 + 开发工具包(编译器 + 调式工具)

4. Java 的环境搭建

4.1 配置环境变量

我的电脑(此电脑) >> 右键点击属性 >> 高级系统设置

1.新建系统变量,变量名输入JAVA_HOME;变量值输入jdk本地安装路径
2.新建系统变量,变量名输入CLASSPATH;变量值输入.(代表当前路径)
3.注意:系统变量下,查找已存在的path变量,追加%JAVA_HOME%\bin

4.2 Dos命令操作

  • windows + R 快捷键呼出运行窗口

  • 再输入cmd并回车打开DOS命令窗口

  • 输入javac回车

    在这里插入图片描述

4.3 常用DOS命令

  • 更换盘符:d:
  • 查看当前目录下的文件及文件夹:dir
  • 进入文件夹:cd 文件夹的名称
  • 返回上一级目录:cd …
  • 清空屏幕:cls
  • 删除文件:del 文件名
  • 删除文件夹:rd 文件夹名称
  • 退出:exit

5. 第一个应用程序

  • 创建一个chapter_01目录

  • 新建以.java结尾的源文件:First.java

  • 编写第一个程序

    class HelloWorld {
        public static void main(String[] args) {
            System.out.print("Hello Everyone");
        }
    }
    
    # class:类(代码的容器)
    # HelloWorld:类的名字(自定义)
    # public:公共的或者公开的意思
    # static:静态的含义
    # void:无法回的、空的
    # main:主要的
    # String:字符串 + [] + args:arguments的缩写,指代对象,参数或者字符串
    # main:主方法(程序的入口)
    # System:程序 + out:输出 + print:打印
    # System.out.print("");控制台输出语句:(""之间的为控制台输出的具体文本内容)
    # ;:英文的分号(代表一行代码的结束)
    

    main(String[] args

    String[] argsmain函数的形式参数,表示字符串参数(也就是动态参数、可以传多个string参数给方法,可以理解成无限参数);其中args作为参数,形式是String数组;

  • 编译:

    • javac + 空格 + 源文件名称.java

      在这里插入图片描述

  • 运行:

    • java + 空格 + 类名

      在这里插入图片描述

6. 类的阐述与定义规范

类与类是并列的关系,不能嵌套;

比如:

class HelloWorld {
	public static void main(String[] args) {
		System.out.print("Hello Everyone");
	}
}

class GoodByeWorld{
	public static void main(String[] args){
		System.out.print("GoodBye");
	}
}

当我们对其进行编译时,会在当前目录下生成多个字节码文件,如下图:

在这里插入图片描述

目录结构如下:

在这里插入图片描述

  • 同一个源文件中可以定义多个类

  • 编译后,每个类都会生成独立的.class文件

  • 一个类中,只能有一个主方法,每个类都可以有自己的主方法

  • public修饰的类称为公开类,要求类名必须与文件名称完全相同,包括大小写;比如

    class HelloWorld {
    	public static void main(String[] args) {
    		System.out.print("Hello Everyone");
    	}
    }
    >>> 使用public修饰了之后就会变成个一个公开类,此时它会有一个要求:类名必须与文件名称完全相同,包括大小写,否则会报错;
    public class HelloWorld {
    	public static void main(String[] args) {
    		System.out.print("Hello Everyone");
    	}
    }
    

    此时就必须要将文件名First.java修改成HelloWorld.java,内容如下:

    在这里插入图片描述

    然后再进行编译:

    在这里插入图片描述

    那么如果一个文件有多个公开类可不可以呢?

    那肯定是不行的,因为我们之前说了文件名必须要与公开类的名称保持一致,而文件只能有一个文件名;

    接下来我们来讲一下,公开类与非公开类的区别:

    public:我们成为访问修饰符,实际上是限定了我们的程序在之后的书写时目标文件/目标类所访问的范围,

    而在java是有4种访问修饰符;

  • 一个源文件中,只能有一个公开类;

7. Package(包)

7.1 Package 的作用与基本应用

  • 作用:类似于文件夹,用于管理字节码(.class)文件;

  • 语法:package 包名;

  • 位置:必须写在源文件的第一行

    • 创建一个文件夹Demo01,并新建一个HelloWorld.java文件,内容如下:
    package p1;
    
    public class HelloWorld {
    	public static void main(String[] args) {
    		System.out.print("Hello Everyone");
    	}
    }
    
    • 编译:

      在这里插入图片描述

    • 如果直接使用:java HelloWorld运行的话,会报错

      在这里插入图片描述

    • 此时必须要加上包名来进行访问才可以,所以需要新建一个文件夹p1,然后将字节码文件放在p1文件夹中,然后在Demo01目录下执行java p1.HelloWorld,如下图:

      在这里插入图片描述

      目录结构如下:

      在这里插入图片描述

      那么如果是这样的话,每次运行字节码文件的时候,都要手动创建一个文件夹,会显得很麻烦,那么有没有什么办法呢?

      可以带包进行编译;

7.2 带包编译、运行

  • 带包编译:javac -d . 源文件名称.java(自动生成目录结构)

    • 我们先将之前创建的p1文件夹给删掉

    • 然后执行命令javac -d . HelloWorld.java,如下图:

      在这里插入图片描述

      编译完成后,要怎么带包运行呢?

    • 带包运行:java 包名.类名(包名+类名又称全限定名)

      在这里插入图片描述

    如上所述,我们在源文件编写的package后面的包名是自定义的;

    而我们定义的包名可以是多层的;

    我们先将之前生成的p1文件夹给删除掉;

    源文件内容如下:

    package p1.p2.p3;
    
    public class HelloWorld {
    	public static void main(String[] args) {
    		System.out.print("Hello Everyone");
    	}
    }
    

    然后继续带包名编译:

    在这里插入图片描述

    生成的目录结构:

    在这里插入图片描述

    带包运行,还是在Demo01目录下执行:java p1.p2.p3.HelloWorld

    在这里插入图片描述

    上面介绍了包里面的字节码文件怎么去访问;

    那么我们的包名到底有几级才合适呢?以及如何命名?代表的具体含义有哪些呢?

7.3 Package 的命名规范

  • 采用域名倒置的规则:www.baidu.com.cn --> cn.com.baidu.xxx

  • 例如:cn.com.company.department.group.project.module.XxxClass

    公司域名 >> 公司部门 >> 组名 >> 项目 >> 模块 >> 类

    如果这个公司很简单的话,只有一个部门,那么就不需要进行分组了;

    cn.com.company.department.project.module.XxxClass

    或者

    cn.com.company.project.module.XxxClass

    如果公司还分地域,也可以加上地域,如下是加上北京:

    公司域名 >> 公司部门 >> 地域 >> 组名 >> 项目 >> 模块 >> 类

    cn.com.company.beijing.department.project.module.XxxClass

    或者

    cn.com.company.bj.department.project.module.XxxClass

    一般控制在4-5级左右即可;

8. Java 的语言规范

8.1 编码规范:书写格式

  • 层级之间必须缩进(Tab:一个制表符)

  • 一行只写一句代码

    package demo;
    
    public class HelloWorld {
        public static viod main(String[] args) {
            System.out.println("Hello");
            System.out.println("World");
        }
    }
    
    
    //System.out.println("Hello");
    //System.out.print("Hello");
    //两者的区别:
    //前者输出后自动换行,后者则不会
    

8.2 编码规范:代码注释

注:注释不参与编译

  • 单行注释

    // 单行注释(不参与编译/编码,且在源代码层面)

    public class TestAnnotation{
    	public static void main(String[] args){
    	
    	// 以下代码代表控制台输出一句文本
    	System.out.print("HelloWorld");
    	// 注释下一行
    	System.out.print("Hello Everyone");
    	}
    }
    
  • 多行注释

    /* 多行注释 */

    public class TestAnnotation{
    	public static void main(String[] args){
    	
    	// 以下代码代表控制台输出一句文本
    	System.out.print("HelloWorld");
    	
    	/*
    	多行注释的开始
    	...
    	...
    	多行注释的结束
    	*/
    	System.out.print("Hello Everyone");
    	}
    }
    

    建议在学习过程中养成注释习惯!

  • 文档注释

    可生成外部文档:javadoc -d . HelloWorld.java

    为什么要做文档注释呢?

    因为在单行注释或者多行注释的时候,只有在拿到源代码的时候才可以查看,而如果生成外部文档的话,即使没有源代码也可以查看文件具体有哪些内容以及功能

    /** 文档注释 */

    • 修饰类
    • 修饰方法函数
    /**
    修饰类,对这个类做一个简单的描述
    文档注释
    这个类旨在介绍java中的注释方式有哪些
    */
    
    public class TestAnnotation{
    	
    	/**
    		这个方法代表程序的入口,即为书写逻辑代码的位置
    	*/
    	public static void main(String[] args){
    	
    	// 以下代码代表控制台输出一句文本
    	System.out.print("HelloWorld");
    	
    	/*
    	多行注释的开始
    	...
    	...
    	多行注释的结束
    	*/
    	System.out.print("Hello Everyone");
    	}
    }
    

    保存,打开CMD

    在这里插入图片描述

    如上图抛出一个警告,书写不够规范,并不会影响内容;

    以及生成多个文件,其中有一个index.html文件,双击打开后如下图:

    在这里插入图片描述

8.3 编码规范:标识符命名

  • 语法规定:
    • 可以由:字母、数字、_、$ 组成,但不能以数字开头;
    • 不能与关键字、保留字重名;
  • 约定俗成:
    • 望文生义、见名知义
    • 类名由一个或多个单词组成,每个单词首字母大写(pascal - 帕斯卡:HelloWorld、GetElementById);
    • 函数名、变量名由一个或多个单词组成,首单词首字母小写,拼接词首字母大写(camel - 驼峰:helloWorld、getElementById);
    • 包名全小写,只可以使用特殊字符 .,并且不以 . 开头或结尾
    • 常量全大写,多个单词用 _ 连接;

9. 总结

  • Java的由来

    • 1995年推出的面向对象的编程语言。三个平台Java SE、Java EE、Java ME,2014年发布的JDK8是商用主流版本。
  • Java语言的特点

    • 面向对象、简单性、跨平台性
  • Java的运行机制

    • 先编译、再解释
  • 第一个应用程序

    • 定义.java结尾的源文件,书写源代码,javac编译,java运行
  • package

    • 定义在源文件的首行,用于管理.class文件
  • Java的语言规范

    • 书写格式、代码规范、三种注释、标识符命名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值