JAVA_chap01

告别城市峡谷定位漂移:手把手教你用PSINS仿真INS/NHC/ODO组合导航(附代码获取) 本文详细解析了INS/NHC/ODO组合导航系统在城市峡谷环境中的应用,通过PSINS平台实现精准定位。文章涵盖核心原理、环境搭建、算法实现及性能优化,帮助开发者解决GNSS信号中断时的定位漂移问题,提升自动驾驶系统在复杂环境中的可靠性。 阅读详情

目标:  

       1. Java背景知识介绍;

       2. Java开发环境设置;

       3. 编写、编译、运行Java程序的过程;

------------------------------------------------------------

JDK主要包括内容:

a. Java虚拟机:负责解析和执行Java程序。Java虚拟机可运行在各种平台上;

b. JDK类库: 提供最基础的Java类及各种实用类。java.lang,java.io, java.util, javax.swing和java.sql包中的类都位于JDK类库中。

c. 开发工具:  这些开发工具都是可执行程序,主要包括:

                 javac.exe         编译工具;

      java.exe          运行工具;

                 javadoc.exe       生成JavaDoc文档的工具

                 jar.exe           打包工具等。

1. 设置Java开发环境

JAVA_HOME:

    1)作用:简化其它变量设置过程中的内容输入。在变量设置过程中有可能要多次使用到JDK的安装路径,如何简化多次输入过程? 可先行将JDK的安装路径定义为一变量,以后凡使用到JDK安装路径的地方均使用该变量进行替换。当有多个版本的jdk存在时,只需要制定java_home指向不同的jdk版本.使用时引入不同的java_home就可以改变jdk版本.不需要更改path内容.                           

path:       

   1) 作用:指定执行外部命令时找寻对应可执行文件的路径范围;

   2) 设置:

i. windows     [开始]->[控制面板]->[系统]->[高级]->[环境变量]->[新建环境变量]命令,就可以创建环境变量path          :path %JAVA_HOME%\bin;%path%           重启命令行窗口,变量即生效。window系统对path命令的大小写不敏感。

classpath:

   1) 作用:代表Java类的根路径。java命令会从classpath中寻找所需的Java类, Java编译器编译Java类时,也会从classpath中寻找所需的Java类。classpath的默认值为当前路径。

   2) 设置:

i. windows     [开始]->[控制面板]->[系统]->[高级]->[环境变量]->[新建环境变量]命令,就可以创建环境变量classpath: classpath .;%classpath%重启命令行窗口,变量即生效。window系统对classpath命令的大小写不敏感。

2. 理解Java语言特征;

a. 编程语言:语言本质即规则: 字符集、词法规则、句法规则(条件语句、循环语句等);桌面应用程序拥有图形化用户接口的软件;服务器应用程序:通过浏览器访问运行;

b. 开发环境:开发程序,不管是桌面应用还是服务器应用,均需要JDK的支持。

c. 应用环境:运行时需要JDK的支持。

d. 部署环境:服务器应用程序需部署运行在服务器应用程序上,服务器本身也是一个Java程序用Java语言编写的服务器应用程序部署运行时也需要Java语言的支持;

java有哪些优点呢?

a. 提供一个解释环境

1) 加速开发: Java当初目的是开发适用于智能化电子消费设备上的软件,它是基于C++语言,但做了简化,能加速软件的开发过程;

2) 一次编译到处运行: 跨平台

3) 多线程:多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一

4) 支持动态更新: 软件代码文件的替换即更新

b. 提供一个比较容易的方式编程

1) 更健壮:没有指针、没有内存管理

2) 纯粹的面向对象的编程:在Java中认为一切均是对象,对象有属性以及改变属性值的方法。通过Java编程围绕着构建对象的模板、实例化对象、调用对象的方法和属性等来进行。

封装,继承,多态

c. 那么如何实现上面这些呢?

虚拟机JVM提供一个解释环境,让java代码可以运行。一次编译多处运行

垃圾回收机制让程序员无需在代码中进行内存管理。JVM进行内存管理

代码安全校验保证java代码的安全性。java代码的安全性

4. 理解Java虚拟机的特征;

Jvm是什么?简称java 虚拟机(javavirtual machine),是用软件来模拟一个虚拟的环境。我们用java编写的源程序经过编译以后生成字节码文件,Jvm 提供了一个解释运行 java字节码文件的环境,只要在不同操作系统上安装了jvm后,就能对同一个java程序进行解释运行,这就java的跨平台,一次编译,到处运行。

5. 描述垃圾收集的概念;

什么叫垃圾回收:

1) 垃圾:无用对象所占据的内存空间

垃圾回收:将无用对象所占据内存空间进行回收的过程;

 

为什么要垃圾回收?

1) 对象创建,需要占用内存空间,在一个程序运行过程中要创建无数个对象,如果对象永久占用内存,那么内存很快会消费光,倒致后续对象无法创建或者出现内存不足的错误。因此必须采取一定措施及时回收那些无用对象的内存,这样保证内存可以被重复利用。

 

C++等程序由程序员显示进行内存释放,这样有可能:

1) 忘记内存释放,导致无端的内存占用;

2) 释放核心类库占用内存,倒致系统崩溃;

Java中垃圾回收处理:

1) 由虚拟机通过一个系统级的垃圾回收器线程自动完成,不会忘记也不会释放错,系统更加稳定;

Java中垃圾回收处理特点CPU是否空闲,内存是否紧张

1) 由虚拟机通过垃圾回收器线程自动完成;

2) 只有当对象不再被使用,它的内存才有可能被回收;如果虚拟机认为系统不需要额外的内存,即便对象不再使用,内存也不会回收;

3) 程序无法显示迫使垃圾回收器立即执行垃圾回收,可以通过java.lang.System.gc()/java.lang.Runtime.gc()建议虚拟机回收对象;

4) 垃圾回收器线程在释放无用对象占用内存之前会先行调用该对象的finalize()方法。该方法是否被调用以及被调用的时间极其不可靠。不建议重写。

6. 阐述Java平台代码安全实现策略;

Java虚拟机为Java程序提供运行时环境,其中一项重要的任务就是管理类,管理类的加载、连接和初始化;

1) 加载:查找并加载类的二进制文件(class文件),将其置于内存的方法区中,然后在堆区中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。

Java虚拟机可以从多种来源加载类的二进制数据,包括:

a. 从本地文件系统中加载.class文件,最常见;

b. 通过网络下载.class文件;

c. 从zip,jar或其他类型的归档文件中提取.class文件;

d. 从一个专有数据库中提取.class文件;

f. 把一个java源文件动态编译为.class文件;

 

2) 连接:

a. 验证:确保被加载类的正确性(有正确的内部结构,并且与其他类协调一致);为什么要验证:

Java虚拟机不知道某个特定的.class文件到底是由正常的Java编译器生成的,还是黑客特制的。类的验证能提高程序的健壮性,确保程序被安全地执行。

类验证内容:

          . 代码和jvm规范一致

          . 代码不能破坏系统的完整性

          . 没有堆栈的上溢和下溢

          . 参数类型是正确的

          . 类型转换的正确的        

b. 准备:为类的静态变量分配内存,并将其初始化为默认值;

c. 解析:把类中的符号引用转换为直接引用(一个指向所调用方法在方法区内的内存位置的指针);

3) 初始化:给类的静态变量赋予正确的初始值;

即时编译器(JIT compiler,just-in-time compiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。

7. 定义类、包、applets和应用程序;

1) Java的工作方式:

                 源代码: 编写Java源代码文件。Java

                   |

                 编译器: 用编译器编译源代码。编译器会检查错误,如果有错就要改正才能产生正确的输出。Class

                   |

                 输出: 编译器会产生字节码。任何支持Java的装置都能够把它转译成可执行的内容。编译后的字节码与平台无关。

                   |

               Java虚拟机: 可以读取与执行字节码。加载指定类,开始执行它的main方法,然后一直运行到main的所有程序代码结束为止。

2) Java的程序结构:

a. 源文件

         包含Java代码(按java语法规则编写的内容)的文件;

 

特征:

      i. java作为后缀;

      ii. 可以包含多个类/接口;

      iii.名称与类名(只包含一个类/接口)public修饰的类/接口(包含多个类/接口)同名;

结构:

      i.  包的声明语句(可有可无,如有只能有一行,且位于最前面);

      ii. import语句(可有可无, 可有多行,紧跟着包的声明语句);

      iii.类的声明语句();

b. 类:

      Java代码组织的单位, Java代码都是以一个个类形式组织的。用Java语言编写程序其实就是编写一个个类;一个类里的语句内容用大括号括起来,一个类里带有零至多个方法。

结构:

     i.  类的声明语句,例:public classHelloWorld

     ii. 类的内容语句,用大括号括起来:

                       (1) 属性;

                       (2) 方法:                      

c. 方法:

      类似于其它语言里的函数或过程。方法里带有零至多行语句。

结构:

     i.  方法的声明语句,例: publicstatic void main(String[] args)

      ii. 方法体,用大括号括起来:

                       (1) 属性;

                       (2) Java语句;  

d. Main方法:

Java虚拟机执行Java程序时,首先执行调用的方法。main方法又叫程序的入口方法或起点方法。不管你的程序有多大,不管你的程序有多少个类,一定都会有一个main()方法来作为程序的起点。

3) 剖析类:    

                public class FirstJavaProgram{

                    public static voidmain(String[] args) {

                       System.out.println("Hello Java, I am your fans!");

                    }

                }

       public:                                  公开给其它类存取;

                 class:                                     类声明的关键字;

                   FirstJavaProgram:             类的名称;

                   void:                                   方法的返回值;

                   main:                                    方法的名称;

                   String[]:                      数组类型;

                   args:                            参数名称;

                   System.out.println:           打印到标准输出上(默认为命令行)

                   "HelloJava, I am your fans!":  要输出的字符串内容;

                   ;                                    每一行语句必须用分号结尾;

注意事项:

    1.允许构建的类中不存在public修饰的class,如果没有public修饰的类,此时在其中构建main方法.也能作为程序入口;public修饰的类必须和当前文件名称一致(大小写必须一致)   helloworld.java     public classHelloWorld 报错.

    2.一个java文件中只允许有一个public修饰的类,并且该类的名称必须和当前文件名称一直.类的名称与文件必须大小写一致.允许类名称小写,只要和文件名称一致.允许有多个普通类

    3.publicstatic void main(String args[]){} 程序的入口所有的方法的构建 public去掉编译通过,运行时发现找不到main方法.程序不能运行.

static去掉编译通过,运行时发现找不到main方法.程序不能运行.

void去掉编译不通过,报方法缺少返回类型;

public和static位于可以置换,因为都是修饰符.其他内容的位置都不能置换,必须满足方法构建的顺序

修饰符 + 返回类型 + 方法名(参数类型 参数名称…){}

main名称不一致, 编译通过,运行时发现找不到main方法,程序不能运行;

main可以和后面()存在空格,jvm仍然理解成main方法

String类型发生改变,编译通过,运行时发现找不到main方法,程序不能运行;

String类型大小写敏感.不能随意更改,编译不通过.

args名称可以发生改变,jvm仍然理解成main方法;[]位置可以发生改变,可以位于String后面或者args后面,但是不能不写;如果不写,编译通过.jvm找不到main方法;main方法在一个类中只能出现一次

    4.packageimport public class 的顺序;package最先并且只能有一个,但是可以不位于第一行;import必须紧跟package,可以有多个;java.lang包是默认导入的jar包,换言之这个包下面的所有类默认被导入.public class必须位于package以及import之后,但是和其他class没有顺序

    javac:将.java文件生产.class文件.如果.java中包含package

    -d .选项可以将.java文件中制定的package内容生成对目录.

e.g HelloWorld.java—>packagecom.briup.chap01;

    -d . 可以在当前目录下生成com目录,com目录中在生成briup目录;briup目录中再生成chap01目录.此时chap01目录中包含生成好的;.class文件如果-d bin选项,不在当前目录下生成对应的package制定目录.而是在bin目录下生成对应的package制定目录

    src目录存放.java文件

    bin目录存放.class文件

          8. 编码、编译以及运用Java应用程序;

         课后练习:问题:

                  1. (Level 1) Whichenvironment variables need to be set?

                     JAVA_HOME

                     PATH

                     CLASSPATH

                  2. (Level 1) What are theadvantages of Java Language? 

                        提供了一个解释环境:

                             加速开发

                            只写一次,到处运行

                            多线程

                            动态更新

                        提供了一个更容易开发的方式

                             更健壮

                            完全面向对象

 

 WhyJava have then?

   Java运行在虚拟机上,由虚拟机读取字节代码运行程序。不同操作系统均有对应的虚拟机;所以能够跨平台。虚拟机在读取字节代码的时侯首先进行代码安全检测,所以更安全。虚拟机通过垃圾回收进制能自动完成内存回收, 避免程序员手动对内存进行的复杂操作,所以加速了开发。

为什么你的Mac蓝牙总断连?深入解析硬件干扰与系统设置避坑 本文深入解析Mac蓝牙频繁断连的原因,包括硬件干扰(如WiFi同频干扰、USB设备电磁干扰)和系统设置问题,并提供详细的优化方案和诊断工具(如blueutil)使用指南,帮助用户有效解决蓝牙稳定性问题。 阅读详情

相关推荐

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 322

数据结构-数组

1、数组 package chap01; public class TestArray { public static void main(String[] args) { long []arr=new long[] {2,3,4}; System.out.println(arr[0]); System.out.println(arr[1]); System.out.print...

cc098818的博客 215

在 SAP BTP 上为应用开启多租户能力:基于 SaaS Provisioning 和 XSUAA 的完整实践指南

本文介绍了在SAP BTP上配置多租户应用的实战指南。主要内容包括: 多租户架构概述:解释provider子账户、consumer子账户和tenant的概念,以及数据隔离机制。 安全配置:在xs-security.json中设置tenant-mode为shared,并为SaaS Provisioning服务添加回调scope授权。 路由配置:通过manifest.yml设置TENANT_HOST_PATTERN来定义多租户访问模式,确保不同租户通过不同子域名访问同一应用。 服务绑定:将XSUAA和SaaS

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 98

vtk环境搭建Chap01

最新看书《VTK图形图像开发进阶》,记录下环境搭建过程。

chen_227的博客 709

JAVA学习笔记-chap1-Java概述

第一章 JAVA概述 软件开发 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS-Disk Operating System 应用软件:扫雷、迅雷、QQ等 开发:制作软件,即将数据与指令集合起来 人机交互方式 软件的出现实现了人与计算机之间的更好的交互。 交互方式: 图形化界面(GUI-Graphical User Interface)这种方式简单直观,...

PrinceCheng的博客 508

Java十二章课后练习

题1:URL对象包含协议,主机地址,(端口号)、(路径)、文件名三部分。 题2:图引用自Wikipedia,https://zh.wikipedia.org/wiki/%E5%88%86%E7%B1%BB%E7%BD%91%E7%BB%9C 题3:水题 图引用自Oracle,https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/net/URL.html 题4-7:水题。 ...

weixin_43262197的博客 557

CH3101 阶乘分解

阶乘分解。。 每个数分解质因数 再合并 复杂度N根号N。 会T。 我第一开始做法是:求出所有1-n所有质数。 遍历1-n,一个一个分解。。。。 复杂度n^2.... 其实我们求出1-n中所有质数后。 对每个质数算出它的ci即可。 怎么算? 对于一个质数p,求它分解后的的次幂 p,p*2,p*3,……p*b //p*b<=n.这么些个数都会有p这个因子。总共下取...

bjfu170203101的博客 266

chap01-java环境搭建

chap01-java环境搭建一.java的特点二.java的运行机制三.环境的搭建四.Java的第一个程序五.公开类六.包 package七.语法规范 一.java的特点 1.跨平台 2.编程资源丰富 3.开源性 二.java的运行机制 编译型:源代码—翻译器—二进制码文件—运行(比如:火星书籍–翻译–中文书) 特点:快,不能跨平台 C 解释型:源代码—翻译器—逐行翻译逐行运行(比如:火星书籍–翻译–读) 特点:跨平台,慢 HTML Js Java的运行机制:先编译后解释 源

Z_0394的博客 273

将一个字符串反转后并输出,代码如下:

package chap06.chap02; public class Chap02_01 {     public static void main(String[] args) {         String str = "异常处理机制";         System.out.println(reverse(str));     }          public static St...

每天进步一点点 4005

head first java代码_HEAD FIRST JAVA源代码 head first java这本书的源代码 - 下载 - 搜珍网...

文件名大小更新时间Head-First-Java-master\AppendixA\BeatBoxFinal$MyDownTempoListener.class9112015-07-17Head-First-Java-master\AppendixA\BeatBoxFinal$MyListSelectionListener.class14122015-07-17Head-First-Java-ma...

weixin_42504230的博客 415

数据结构-邓俊辉视频(java代码-排序算法 Chap1)

-Chapter1 1.1 Haistone package Chap1; import java.util.Scanner; public class Hailstone { private static Scanner s; public static void main (String[] args) { int len = 1; System.out.println("P...

羊咩咩的博客 411

Java learn 01 Java basic

Chap 0 Preface Java Basic Content List Java data type、 标识符、运算符、表达式和语句、分支、循环、方法 OO Exception Java Array Java 常用类 Java 容器类 Collection / Generic Java I/O Stream Java Thread...

weixin_34233679的博客 173

chap01: 基础

l       Final变量定义时必须初始化. 但是这个规则仅限于类的成员变量, 如果在函数类定义一个final变量,则不受这个约束. 但是在C++中, 类的const成员必须用够找函数的成员初始化列表初始化, 在函数中的const 在定义时必须初始化.l       所有浮点数的字面变量都是double型的,如果一个浮点型数的字面值要明确表示float型时,需在后面加英文字母F或者f.

(孙)小泉 1007

Struts2 chap01基本原理总结

Struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> helloWorld.jsp

Vangogh_java的博客 571

Python实现华为PORTAL V2 CHAP认证的三大关键点与避坑指南

网络认证协议是保障网络安全接入的基础技术,其中挑战握手认证协议(CHAP)作为一种广泛使用的认证机制,通过“挑战-响应”模式避免了密码在网络上明文传输,显著提升了认证过程的安全性。其核心原理是服务器生成随机挑战值,客户端结合密码计算响应值,服务器验证响应值完成身份鉴别。在工程实践中,CHAP认证的实现需要精确处理二进制数据、字符编码和报文构造等细节,这对于开发网络设备对接、园区网准入等应用具有重要价值。本文聚焦于华为PORTAL V2协议这一具体应用场景,深入剖析了在Python中实现CHAP认证时,围绕挑

weixin_33748818的博客 415

chap01 .net 基本框架介绍

  2000年,微软向全球宣布其革命性的软件和服务平台,它就是后来的Microsoft.NET,简称.NET。该平台利用以互联网为基础的计算和通讯的特点,通过先进的软件技术和众多的智能设备,提供更简单、更个性化、更有效的互联网服务。 .NET的战略目标是在任何的时候,任何地方,任何工具都能通过.NET的服务获得网络上的任何信息,享受网络带给人们的便捷与快乐。通过10年发展和时间的考验,证明...

weixin_30387423的博客 218

Java 核心技术 I chap 1 ~ 4 阅读摘要

1. 前言最近突然想学一下java, 于是就找到了 《Java 核心技术 I》这本书来研究, 并记录一些自己觉得相对重要的, 与C++中有些不太一样的东西。2. chap 1 概述2.1 Java 特点 java 可以看成是C++语法的一个纯净版本, 简单 面向对象 可以非常容易的处理网络 安全, 不用担心内存泄露 可移植性好, 在各个平台上运行结果保证一致 多线程特性 有applet 可以用于启用

zhyh1435589631的专栏 709

JAVA_chap02

第二章: Identifiers, Keywords and Types(40-63)目标: 1. 标识符、关键字和类型介绍;           2. 如何构建类?------------------------------------------------------------java.lang.Object 是所有java类的父类1. 注释作用:使部分内容只为程序员可见,不为编译器所编译...

janggeumkk的博客 378

java章节练习题_java 1-6章测试题.doc

java 1-6章测试题Java 1-6章测试题选择题1.public static void main(String args[]) {boolean a[]=new boolean[4];int I= 1;System.out.println(a[I]);}What will be printed?()A:Compilation Error in Line 2B:Compilation Err...

weixin_39867066的博客 381

CMakeList.txt脚本文件及Cmake常用命令

什么是CMakeList.txt? CMakeList.txt什么,简单地说就相等于linux下的Makefile文件,将需要的.h文件和.cpp文件包含起来,然后在不同平台下使用Cmake调用各自编译器生成各自的工程。 1 CMakeList.txt的写法 建立VTK应用程序之前,需要先写一个CMakeList.txt脚本文件。 先建立一个文件夹,为便于示例程序文件的管理,在“vtk

补丁_1024的博客 2738

CH1601 前缀统计

给定N个字符串S1,S2…SNS1,S2…SN,接下来进行M次询问,每次询问给定一个字符串T,求S1S1~SNSN中有多少个字符串是T的前缀。 输入字符串的总长度不超过106106,仅包含小写字母。 输入格式 第一行输入两个整数N,M。 接下来N行每行输入一个字符串SiSi。 接下来M行每行一个字符串T用以询问。 输出格式 对于每个询问,输出一个整数表示答案。 每个答案占一行。 ...

bjfu170203101的博客 367

java学习笔记3--最简单的代码

可以使用最简单的文本编辑器,编写如下的程序,保存的名字必须是Hello.java。  package chap01;   //当前类所属包名称    public class Hello  //当前类名    {      public static void main(String[] args) //应用程序的主函数       {            System.out.p

风轻云淡 勇往直前 667

Delphi 13控件之Raize-KonopkaControls-8.0 for Delphi 13 Full Source (Bat install and Add Chinese,ItemCo

Delphi 13控件之Raize_KonopkaControls-8.0 for Delphi 13 Full Source (Bat install and Add Chinese,ItemCo

Fluent 燃烧算例详细教程.pdf

Fluent 燃烧算例详细教程

上一篇: shell学习笔记
下一篇: JAVA_chap02
janggeumkk
博客等级 码龄9年 2粉丝 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值