当前位置: 首页 > news >正文

Java速成篇-Day01笔记

提示:这里只记录我个人不熟悉的知识,并非所有内容

笔记目录

  • 课程:04-第一行代码
    • ① jshell
    • ② 对象.方法
  • 课程:05-第一份源码
    • ① Java开发程序的流程
    • ② 入口方法
  • 课程:06-常见问题-中文乱码
    • ① 乱码原因
    • ② 解决方法
  • 课程:09-为何要字节码


提示:以下是本篇文章正文内容,下面案例可供参考

课程:04-第一行代码

① jshell

介绍: jshell 是 Java 9 新增的开发工具,可以用于执行 Java 代码并立即获得执行结果。支持定义变量、方法、类等,支持输入语句、表达式,支持导入外部 Java 源文件。按照官方的定义,jshell 里用到的小块 Java 代码被称为“片段”。
在这里插入图片描述
在这里插入图片描述

② 对象.方法

  • Java编程语言是面向对象编程,落到代码层面是“Java编程的代码都是由【对象.方法】构成”。举个例子:

    /*
    System.out是对象;
    println("")是方法,是System.out对象所拥有的方法。
    */
    System.out.println("Hello World");
    
  • 面向对象编程的原因:更符合人类对现实世界的认知,例如人吃饭,狗遛弯,人、狗就是对象,吃饭、遛弯就是方法(即可执行的操作/行为)。所以Java语言将代码块封装成对象,并设计好方法(可执行的行为/操作),然后用 “对象.方法” 来编程,即面向对象的编程。

课程:05-第一份源码

① Java开发程序的流程

  1. 编写源码文件(.java文件)(程序员主导的内容)
  2. 编译工具javac编译源码文件->字节码文件(.class文件)
  3. JVM编译字节码文件->机器码文件
  4. 计算机运行机器码文件

② 入口方法

入口方法: JVM只运行有入口方法的类。

class A{/* 入口方法(也称为main方法);static:表示这个方法不属于任何对象;main:方法名。*/ public static void main (String[] args){System.out.println("Hello World");}
}

课程:06-常见问题-中文乱码

① 乱码原因

Windows环境下,Java源文件默认的中文编码格式是UTF-8,而Java编译工具Javac默认的中文编码格式是GBK,编码格式不同导致编译后的字节码文件里中文是乱码。

② 解决方法

核心思路: 让源文件和Javac编译工具的中文编码格式一致即可

  • 方法1:将Javac开发工具的中文编码格式修改为UTF-8
  • 方法2:将源文件的中文编码格式修改为GBK

课程:09-为何要字节码

省流: 为了便于跨平台编程

C++编码的开发流程:

  1. 程序员编写源码
  2. 编译器将源码编译为机器码
  3. 计算机运行

在这里插入图片描述

但是不同系统,其对应的机器码格式不同,所以编译器有Linux编译器、Windows编译器的区分。如果采用直接将源码编译为机器码的开发流程,会出现以下问题

  • 程序员需要熟悉多个系统平台的编译器,导致学习成本增加;
  • 在Windows开发环境下的系统完成编译、测试后,如果需要部署到Linux系统,则需要重新编译和测试,会花费更多的时间和精力。

Java编码的开发流程:

  1. 程序员编写源码
  2. 编译器将源码编译为字节码
  3. JVM将字节码解释为机器码
  4. 计算机运行机器码文件

在这里插入图片描述

无论在任何系统/平台下,Java的编译器会将源码编译为所有系统通用的字节码,在然后再根据不同的系统平台,运行对应的JVM,将字节码转换成机器码进行运行。举个例子:在Windows开发环境下的源码,在部署到Linux系统时,原先在Windows环境里编译的字节码可以直接使用,无需重复编译,直接用Linux的JVM运行原先在Windows环境里编译的字节码即可,反之亦可。这么处理的好处

  • 程序员不需要熟悉多个系统的编译器,只需要工作在自己最熟悉的开发环境即可;
  • 开发完成的系统只需要在开发环境里进行编译即可,无需在部署系统进行二次编译。

会有哪些问题?

  • 需要在每个平台安装对应的虚拟机JVM;
  • 相比于源码->机器码,源码->字节码->机器码多了一个步骤,导致性能下降。
http://www.lryc.cn/news/31321.html

相关文章:

  • 从源码开始精通spring-security1
  • 你应该优化的JavaScript代码,以及前端工程师日常使用的小技巧。使之更加简洁,可读性更强,更易维护。
  • 自动化测试
  • leetcode-每日一题-807(中等,数组)
  • 【Linux】Linux项目自动化构建工具make makefile
  • 华为OD机试题 - IPv4 地址转换成整数(JavaScript)| 含思路
  • spring整合通用mapper
  • 一天什么时间发抖音浏览量高?5个抖音最佳发布时间段
  • 华为OD机试题 - 关联子串(JavaScript)| 含思路
  • 【代码随想录训练营】【Day33休息】【Day34】第八章|贪心算法|1005.K次取反后最大化的数组和|134. 加油站|135. 分发糖果
  • <c++> const 常量限定符
  • pytorch实现transformer模型
  • 【懒加载数据 Objective-C语言】
  • 人脸网格/人脸3D重建 face_mesh(毕业设计+代码)
  • JMeter 控制并发数
  • git常用命令汇总
  • 【2023】华为OD机试真题Java-题目0226-寻找相似单词
  • 【项目管理】晋升为领导后,如何开展工作?
  • JAVA开发(Spring Gateway 的原理和使用)
  • 踩坑:解决npm版本升级报错,无法安装node-sass的问题
  • xFormers安装使用
  • React—— hooks(一)
  • Ubuntu20.04下noetic版本ros安装时rosdep update失败解决方法【一行命令】
  • Vue2.0开发之——购物车案例-Footer组件封装-计算商品的总价格(51)
  • 德鲁特金属导电理论(Drude)
  • (十一)python网络爬虫(理论+实战)——html解析库:BeautfulSoup详解
  • 四轮两驱小车(五):蓝牙HC-08通信
  • 华为OD机试题 - 对称美学(JavaScript)| 机考必刷
  • Web Spider案例 网洛克 第四题 JSFuck加密 练习(八)
  • 【JavaScript速成之路】JavaScript数组