java_day01

1.面向过程&面向对象

 

  • 面向过程
    • 优点:性能好,单片机、嵌入式开发、Linux/Unix一般采用;
    • 缺点:不易维护、复用、拓展;
  • 面向对象
    • 优点:易维护、复用、拓展,有封装、继承、多态性的特性,便于低耦合,使系统更灵活,更易于维护;
    • 缺点:性能不如面向过程

2.Java语言的特点

  1. 简单易学;
  2. 面向对象(封装、继承、多态);
  3. 平台无关性;
  4. 可靠性;
  5. 安全性;
  6. 支持多线程;
  7. 支持网络编程;
  8. 编译与解释并存;

3.JVM JDK和JRE

  • Java虚拟机(JVM)
    • Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果
    • 在 Java 中,JVM可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。java_day01_第1张图片

       

    • 我们需要格外注意的是 .class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT 编译器,而JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言。
    • HotSpot采用了惰性评估(Lazy Evaluation)的做法,根据二八定律,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是JIT所需要编译的部分。JVM会根据代码每次被执行的情况收集信息并相应地做出一些优化,因此执行的次数越多,它的速度就越快。JDK 9引入了一种新的编译模式AOT(Ahead of Time Compilation),它是直接将字节码编译成机器码,这样就避免了JIT预热等各方面的开销。JDK支持分层编译和AOT协作使用。但是 ,AOT 编译器的编译质量是肯定比不上 JIT 编译器的。
    • 总结:Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。
  •  JDK和JRE
    • DK是Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。
    • JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。
    • 如果你只是为了运行一下 Java 程序的话,那么你只需要安装 JRE 就可以了。如果你需要进行一些 Java 编程方面的工作,那么你就需要安装JDK了。但是,这不是绝对的。有时,即使您不打算在计算机上进行任何Java开发,仍然需要安装JDK。例如,如果要使用JSP部署Web应用程序,那么从技术上讲,您只是在应用程序服务器中运行Java程序。那你为什么需要JDK呢?因为应用程序服务器会将 JSP 转换为 Java servlet,并且需要使用 JDK 来编译 servlet。

4.Java和C++

  • 都是面向对象的语言,都支持封装、继承和多态
  • Java 不提供指针来直接访问内存,程序内存更加安全
  • Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
  • Java 有自动内存管理机制,不需要程序员手动释放无用内存

5.主类

  一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个主类是指包含 main()方法的类。而在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。

  简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。

6.字符型常量&字符串常量

 

  1. 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的若干个字符
  2. 含义上: 字符常量相当于一个整形值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
  3. 占内存大小 字符常量只占2个字节; 字符串常量占若干个字节(至少一个字符结束标志) (注意: char在Java中占两个字节)
  4. java_day01_第2张图片

     

7.helloworld

package day_01;//包名

public class helloworld {//类名:helloworld,必须与文件名一致
    public static void main(String[] args) {//主函数(主方法),这里是静态
        System.out.println("hello world");//输出语句
    }

}

8.保留字

java_day01_第3张图片

9.标识符

由英文大小写字母、数字、$、_(下划线)组成

  • 不能以数字开头
  • 不能是Java中的关键字
  • 区分大小写
  • 类每个单词必须首字母大写
  • 方法、变量第二个单词开始首字母大写
  • 常量每个字母都大写(用_隔开)
    • 单行注释,格式: //注释文字
    • 多行注释,格式: /* 注释文字 */
    • 文档注释,格式:/** 注释文字 */
  • 进制
    • 二进制,由0,1组成。以0b开头
    • 八进制,由0,1,…7组成。以0开头
    • 十进制,由0,1,…9组成。整数默认是十进制的
    • 十六进制,由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/alex123/p/10644038.html

你可能感兴趣的:(java_day01)