zoukankan      html  css  js  c++  java
  • Java入门

    Java应用程序运行机制

    java是编译型和解释型混合的语言。由java源文件编译成字节码文件,再解释成机器码指令。

    Java虚拟机(JVM)

    所有*.java的源代码程序最终都要经过编译才能使用,但编译后的程序不是绑定在某一具体系统上的程序,而是一种通用的程序,而这种通用性的程序就是JVM所能识别的代码程序。

    所有的程序并不是直接运行在操作系统上,而是通过JVM执行,执行速度肯定会比直接在操作系统上执行慢。但是由于硬件技术的发展,现在这已经不是问题,但是依然会存在有JVM调优问题。

    JDK和JRE

    • jdk:java开发工具包
    • jre:java运行时环境,只提供程序的解释功能,不提供程序的开发功能。jdk默认包含了jre。
      jdk 11及以后的版本安装时不会弹出jre安装选项,需要在安装完jdk以后cd到jdk的目录运行以下命令即可在jdk目录下生产jre目录:
    binjlink.exe --module-path jmods --add-modules java.desktop --output jre
    

    编写第一个java程序

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

    • 在java中最基本的单元是类,所以的程序都必须封装在类中执行。基本格式:[public] class 类名 {}

    • public class 类名 {}:类名必须与文件名一致,否则会报错。一个java文件里只能定义一个public class

    (base) PS C:UsersPeng WeiiCloudDriveMyFileJava学习_阿里云大学> javac Hello.java
    Hello.java:1: 错误: 类 HelloWorld 是公共的, 应在名为 HelloWorld.java 的文件中声明
    public class HelloWorld {
           ^
    1 个错误
    
    • class 类名 {}:类名可以与文件名不一致,但*.java编译后的*.class文件的文件名会与类名一致,而不是和*.java的文件名一致,解释执行的时候也应解释*.class的文件名。一个java文件里可以定义多个class,并且编译后每个class类都会生成一个*.class文件

    项目开发时很少会出现一个*.java文件里面定义多个class的情况,所以一个java文件里定义一个public class就够了。
    下面的Hello.java文件编译后的文件是HelloWorld.class而不是Hello.class

    // Hello.java
    class HelloWorld {
    	public static void main(String args[]) {
    		System.out.println("Hello World!");
    	}
    }
    
    • java有明确的命名要求,类名每个单词首字母要大写。

    主方法

    主方法是所以程序执行的起点,并且一定要定义在类当中。主方法所在的类叫主类,所有主类都用public class定义。

    屏幕打印(系统输出)

    • 输出之后追加换行:System.out.println()
    • 输出之后不追加换行:System.out.print()

    jshell

    java的交互式编程环境,只需要编写核心代码,而不用写很多结果化的代码,可用于验证程序等。
    在jshell.txt中写入核心代码:

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

    使用jshell可直接运行:

    CLASSPATH

    我们在运行java字节码文件时,jvm默认只找当前目录下的字节码文件,通过SET CLASSPATH=路径可以解释运行其他目录下的字节码文件,但是并不推荐这么做。
    jvm默认只寻找当前目录下的字节码文件是因为默认的CLASSPATH=.,在我们安装了其它和java相关的程序软件后CLASSPATH的值可能会被更改,可以在系统变量中设置CLASSPATH的值来避免这种情况发生。

    面试问题:PATH和CLASSPATH的区别?

    • PATH:操作系统提供的路径配置,定义所有可执行程序的路径。
    • CLASSPATH:是有jre提供的,用于在定义java程序解释时类加载的路径,默认为只在当前目录加载,可通过SET CLASSPATH=路径 来设置。jvm → CLASSPATH定义的路径 → 加载字节码文件。
  • 相关阅读:
    MFC发送自定义消息
    NDIS LWF:NdisFSendNetBufferLists蓝屏(DRIVER_IRQL_NOT_EQUAL_OR_LESS)
    CreatFile打开驱动失败
    反向代理和正向代理区别(转)
    MFC对文件文件夹转移、删除、重命名、复制【转】
    解决 OnDropFiles 可能无响应的问题【转】
    HTML5
    Spring常见面试题总结
    Mybatis常见面试题总结
    MyBatis
  • 原文地址:https://www.cnblogs.com/pengweii/p/12576688.html
Copyright © 2011-2022 走看看