1.初识Java

文章目录

  • 绪论
  • Java初步
    • Java程序的运行机制
    • 进行Java开发的准备
      • 搭建JRE并获取JDK
    • 基本Java命令与第一个Java程序
      • 基本Java命令
      • 第一个Java程序
    • Java的命名规范

绪论

是的,我又想再学一遍Java了,之前上课的时候总是囫囵吞枣,这种填鸭式的学习方式也许能使我成绩上好看一些,但我都知道,其实我所学所掌握的,少之又少.利用这一个假期,我重新回来好好学学Java.南方的冬天异常地寒冷,愿它能安抚我浮躁的内心,让我能真正学点什么.

如同所有的面向对象语言一样,Java拥有面向对象的三大特性:封装,继承,多态.除此之外还有各种面向对象带来的好处,这些东西我不再写在这里,随便任何一本参考书都说过这些,似乎想说服什么人一样.实际上好的东西不需要说服谁,Java也好C也好,它们都证明了自己足够优秀,我一直都坚信的一个理念就是:Take whatever suits you best.我们当然不需要在工具的好坏上争个高下,除非你是工具的开发者.

Java初步

Java程序的运行机制

不同于大多数语言,Java既可以看作是编译型语言,也可以看作解释型语言,其特别之处在于,Java是运行于Java虚拟机(Java Virtual Machine,JVM)上的语言,Java程序需要编译,但和其它语言编译完成后生成的编译平台相关的机器码不同,其编译生成的(*.class)文件是无关平台的字节码,当然它无法在任一平台执行,必须用Java解释器来执行,即JVM来执行.

JVM是一个抽象的计算机,和真实的计算机一样,它具有指令集并使用不同的存储区域,负责执行指令,管理数据,内存和寄存器.正是由于JVM的存在,才使得Java的跨平台特性成为可能,也正是由于其存在,才使得Java的执行效率不如其它一些编译型的语言高效.

进行Java开发的准备

搭建JRE并获取JDK

  • 获取并安装JDK(Java Development Kit),JRE(Java Runtime Environment)集成在JDK中
  • 配置Java环境变量(告知系统javajavac等命令的安装位置)

在Linux下配置Java环境变量:

  • 返回当前用户根目录,命令:~,打开终端,并输入以下命令:

  • ls -a,找到.profile,使用编辑器打开,如gedit .profile

  • 设置PATH,在文件末尾添加内容如下JAVA_HOME内容是JDK安装路径,Linux下$代表引用,:用于分隔路径:

    # set PATH so it includes Oracle JDK
    export JAVA_HOME=/usr/share/java/jdk-11.0.1
    export PATH=$JAVA_HOME/bin:$PATH
    
  • 重启/注销系统重新登录/执行source .profile,让PATH环境变量生效

刚刚实现的是单一用户环境变量配置,也可以设置系统全局变量(需root权限,对所有用户有效),如:

  • 返回系统根目录,命令:/,进入/etc,命令:etc,执行ls -a,找到environment文件
  • 执行gedit environment,可以看到PATH的内容,将JDK安装路径的二进制文件目录加入PATH即可,如:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/share/java/jdk-11.0.1/bin"
  • 重启/注销系统重新登录/执行source environment,让PATH环境变量生效

以上教程均为Ubuntu 18.10测试无误得出,不同Linux发行版大同小异,但不保证完全相同

JDK 1.5以上版本将无需设置CLASSPATH,CLASSPATH的用途以后会说明

设置好环境变量,使用java -version命令进行测试,输出如下:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

注:source命令只在当前终端有效,让Java环境变量一直生效稳妥的方法是注销系统重新登录

建议设置当前用户PATH即可,修改系统全局变量不当或将导致系统无法进入X环境,请确保你不会犯错误

在Windows下配置Java环境变量

基本Java命令与第一个Java程序

基本Java命令

# 下面是一条编译命令,用于将(*.java)文件编译生成(*.class)文件
javac FileName.java

# 当然你可以使用一些参数,如:
# 指定JRE编译时查找类的位置
javac -cp dir1,dir2,...,dirn FileName.java
javac -classpath dir1,dir2,...,dirn FileName.java

# 解决*dows系统存储文本时编码格式的一些设计缺陷
# 好吧其实是指定编译时以何种编码格式从(*.java)文件中读取信息
javac -encoding UTF-8 FileName.java

# 指定存放(*.class)的路径
javac -d path FileName.java

# 我们这么执行(*.class)文件:
java FileName.class

# 当然你可以使用一些参数,如:
# 指定JVM运行时查找类的位置
javac -cp dir1,dir2,...,dirn FileName.class
javac -classpath dir1,dir2,...,dirn FileName.class

# 其它参数就不一一介绍了

从以上命令我们可以看出,CLASSPATH是一个用于指定寻找class目录的环境变量,可以在编译/运行文件时指定

从Java 9以后,新增了一个jshell工具,用于在终端学习Java或测试一些Java的新API,它可以直接执行Java语句,变量声明和表达式,并即时显示运行结果,其用法如下:

# 输入jshell并回车,就可以进入jshell:
yjzzjy4@yjzzjy4-AERO-15XV8  ~  jshell
|  欢迎使用 JShell -- 版本 11.0.1
|  要大致了解该版本, 请键入: /help intro

jshell> System.out.println("Hello World!");
Hello World!

jshell> int a = 0x3f3f3f3f
a ==> 1061109567

jshell> class test {
   ...> }
|  已创建 类 test

jshell> /exit
|  再见

# jshell的一些用法,使用其/help参数查看,不再在这过多介绍

第一个Java程序

Java是一个纯面向对象的语言,其所有的语句都必须写在类体内部(除了一些特殊语句,如import),因此Java程序的构成和C++不一样的地方在于,Java的函数必须属于某个类,这些函数称为类的方法,包含主函数的类称为主类,Java程序实际上就是一个又一个类的信息交流过程,一个Java程序中可以有多个类,但只能有一个主类和一个主方法,程序的运行从主类开始.因为方法必须属于某个类,因此Java不支持类外定义方法,更符合封装性的特性.

Java程序的基本构成如下:

class someclass {
    private double index;	//成员;
    public void func() {}	//方法;
}

第一个Java程序(Hello World)

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

Java的命名规范

补充说明一下Java的命名规范:

和C惯用下划线的命名规则不同的是,Java使用驼峰命名规则,其规则大致如下:

  • 变量命名:若是单个单词,则小写;若是多个单词第一个单词小写,其余单词首字母都要大写
  • 常量命名:使用纯大写单词+下划线分割,除常量外,Java不建议使用下划线命名
  • 类名/接口命名:如下:
类型 命名
普通类/接口/接口实现类 所有单词首字母大写
异常类 <类名>+Exception
测试类 <类名>+Test
  • 方法命名:大小写同变量命名,一般使用动词或动词+名词组合,特定方法命名如下:
方法类型 命名
设置/获取某个值的方法 setV/getV
返回长度的方法 length
判断布尔值的方法 isV
将对象转换为某个特定类型的方法 toT
  • 包(package)命名:必须全部使用英文小写字母,禁止使用"下划线"等字符
包类型 命名
项目包 <域名反转>.<团队名>.<项目名>.<类名>
相关项目包 <域名反转>.<团队名>.<父项目名>.<子项目名>.<类名>

请看如下示例:

package com.google.www.gmailteam.inbox.*;	//inbox项目下的所有类;
package com.google.www.gmailteam.inbox.checkerplus.*;	//checkerplus是inbox的子项目;

interface SomeInterface {	//接口;
    public void func();
}

class SomeClass implements SomeInterface {	//接口的实现类;
    private int len;
    private double currentBalance;
    public final int MAX_SIZE = 0x3f3f3f3f;
    public double getBalance() {
        return currentBalance;
    }
    public int length() {	//返回长度方法;
        return len;
    }
    public boolean isRight() {}	//boolean方法;
    public void func() {}	//覆盖抽象方法;
}

class MyClass { 	//普通类;
    public toSomeClass {}	//转换方法;
}

class MyClassTest {}	//测试类;

class MyException extends Exception {}	//异常类;

以上,便是我进入Java世界的第一步.

你可能感兴趣的:(编程语言,Java,Java)