Java程序结构与常量变量难点解析

目录
  • 前言
  • 一、java程序结构
  • 二、java程序的运行
    • 1.运行过程
    • 2.JVM是什么?
  • 三、常量与变量
    • 1. 计算机工作原理
    • 2.变量和类型
    • 3.变量的命名规则
    • 4.变量的作用范围
  • 总结

前言

新征程,进入java的学习。
给自己定下一个铁律:
学习,刷题。

一、java程序结构

下面先上一个最简单的java程序:

public class HelloWorld{
	public static void main(String[] args){

		System.out.println("hello");
	}
}

接下来,我们分析一下java这个程序的结构。
首先,Java 区分大小写。 如果出现了大小写拼写错误(例如, 将 main 拼写成 Main),程序将无法运行。

又例如(String[] args)中的S要大写,我刚写这个程序就被没有大小写的细节搞到浪费了好多时间,请大家一定要注意。

关键字 public 称为访问修饰符, 这些修饰符用于控制程序的其他部分对这段代码的访问级別。

关键字 class 表明 Java 程序中的全部内容都包含在类中。

关键字 class 后面紧跟类名。

一个Java程序的结构由如下三个部分组成:

1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个 类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法。方法必须在类的内部声明。
3.方法:在方法的花括号中编写方法应该执行的语句。

【总结】
类存在于源文件里面;方法存在于类中;语句存在于方法中。

二、java程序的运行

1.运行过程

Java程序运行的流程如下图:

所有的Java源代码(以.java为扩展名),通过Java编译器javac变成字节码,也就是以.class为扩展名的文件。然后利用命令Java讲对应的字节码通过java虚拟机(JVM)解释为特定操作系统,如Windows,Linux等能理解的机器码,最终Java程序得以运行。

2.JVM是什么?

JVM就是Java虚拟机。

我们可以理解为在机器和编译程序之间加入了一层抽象的虚拟机器,这个虚拟机器在任何平台都提供给编译一个共同的接口。

编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换成特定的系统代码执行。

下面解释两个东西:

JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。
JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

那么JRE JDK JVM的三者关系如何?
如图:

三、常量与变量

1. 计算机工作原理

说到计算机原理,就不得不提一个人——冯·诺依曼。被称为计算机之父。

著名的冯·诺伊曼设计思想如下:
1、计算机由运算器、控制器、存储器、输入设备、输出设备组成。五大部件通过系统总线连接。

【解释】
当输入设备向总线输入指令时,CPU获取该指令并处理。当CPU处理指令时,CPU调用内存储器的数据以便进行控制和计算,最后将计算结果发送给输出设备或外存储器。

当内存储器中的数据需要从外存储器中读取时,外存储器将数据送往总线,在CPU的控制下,内存储器再将该数据进行存储。

2、计算机内部采用二进制表示指令和数据

3、将编好的程序送入内存储器中,让程序来指挥计算机自动逐条取出指令和执行指令。其核心是“存储程序和程序控制”。

2.变量和类型

变量是利用声明的方式,将内存中的某个内存块保留下来以供程序使用,其内的值是可变的。

声明变量的作用

1、指定在内存中分配空间的大小
2、规定这个变量所能接受的运算

3.变量的命名规则

1、变量名可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)(非常不建议使用)等组成
2、变量名不能以数字开头
3、变量名不能是Java中的保留关键字

4.变量的作用范围

作用范围有时也称为作用域
按作用范围划分,变量分为成员变量和局部变量

【成员变量】
在类中定义的变量为成员变量。它的作用范围是整个类。也就是说在这个类中都可以访问到定义的这个成员变量。

public class HelloWorld{
	static int a=10;//定义一个成员变量
	public static void main(String[] args){

		int num=10;
		System.out.println("num");
	}
}

【局部变量】
在一个函数(或称方法)或函数代码块仲定义的变量称为局部变量,局部变量在函数或代码块被执行时创建,在函数或代码块结束时被销毁。

public class HelloWorld{
	static int a=10;//定义一个成员变量
	public static void main(String[] args){

		int num=10;//定义一个局部变量
		System.out.println("num");
	}
}

【注意】局部变量在进行取值操作前必须被初始化或赋值操作,否则会出现编译错误!

总结

数据类型那一部分的内容想了想,还是不要拆开来写博客,于是我打算在整一节学完之后,再给大家整理。这次就先整理这么多内容。

到此这篇关于Java程序结构与常量变量难点解析的文章就介绍到这了,更多相关Java 程序结构内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java常量池详解

    目录 (1)class常量池 (2)运行时常量池 (3)基本类型包装类常量池 (4)字符串常量池 总结 java中有几种不同的常量池,以下的内容是对java中几种常量池的介绍,其中最常见的就是字符串常量池. (1)class常量池 在Java中,Java类被编译后就会形成一份class文件:class文件中除了包含类的版本.字段.方法.接口等描述信息外,还有一项信息就是常量池,用于存放编译器生成的各种字面量和符号引用,每个class文件都有一个class常量池. 其中字面量包括:1.文本字符串

  • 详解JAVA 常量池

    前言 对常量池的理解之前,需要熟悉的是一些术语: 字面量 在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation). 几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数.浮点数以及字符串:而有很多也对布尔类型和字符类型的值也支持字面量表示: 还有一些甚至对枚举类型的元素以及像数组.记录和对象等复合类型的值也支持字面量表示法.C语言关于复合字面量的介绍可参考: [1]  . 百度也给了一个例子: 这个object-c 的例子,容易理解. #incl

  • Java字符串常量池示例详解

    为什么会有常量池的概念? 不知道小伙伴们是否有思考过这个问题? 没有思考也无所谓,小编在这里类比一下,大家就会清晰了.什么是池? 我们听的最多的池,应该是数据库连接池. 为什么会有数据库连接池,其实就是为了节省资源,提高性能,防止重复创建连接,避免占用内存和网络资源. 常量池其实就是跟数据库连接池的目的都是一样的.那么他是如何实现的呢? 因为常量池是JVM的概念,源码我们也不好看,所以我们还以连接池来类比. 池化的目标就是缓存和管理 稍微提一点池化的概念,其实就是对资源做一个包装,在包装层来加一

  • Java数据结构与算法之单链表深入理解

    目录 一.单链表(Linked List)简介 二.单链表的各种操作 1.单链表的创建和遍历 2.单链表的按顺序插入节点 以及节点的修改 3.单链表节点的删除 4.以上单链表操作的代码实现 (通过一个实例应用) 三.单链表常见面试题 1.求单链表中节点的个数 2.查找单链表中的倒数第K个节点[新浪面试题] 3.单链表的反转[腾讯面试题,有点难度] 4.从尾到头打印单链表 一.单链表(Linked List)简介 二.单链表的各种操作 1.单链表的创建和遍历 2.单链表的按顺序插入节点 以及节点的

  • Java中不用第三个变量来互换两个变量的值

    我们先看看使用第三变量的方法.(开胃菜) class Swap{ public static void main(String[] args){ int a = 3; int b = 5; int c; c = a; //把a的值先存到c a = b; //把b存给a b = c; //把存在c的值倒赋给b System.out.println("a="+a); //a==5 System.out.println("b="+b); //b==3 } } 下面是运行结

  • java循环结构、数组的使用小结

    数组 数组是是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理. 数组本身是引用数据类型,既可以存储基本数据类型,也可以存储引用数据类型.它的元素相当于类的成员变量. 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址. 数组的长度一旦确定,就不能修改. 通过下标(或索引)的方式调用指定位置的元素. 数组的分类: 按照维度:一维数组.二维数组.三维数组.-按照元素的数据类型分:基本数据类型元素的数组.引用数据类型元素

  • Java程序结构与常量变量难点解析

    目录 前言 一.java程序结构 二.java程序的运行 1.运行过程 2.JVM是什么? 三.常量与变量 1. 计算机工作原理 2.变量和类型 3.变量的命名规则 4.变量的作用范围 总结 前言 新征程,进入java的学习. 给自己定下一个铁律: 学习,刷题. 一.java程序结构 下面先上一个最简单的java程序: public class HelloWorld{ public static void main(String[] args){ System.out.println("hell

  • 解析Java程序中对象内存的分配和控制的基本方法

    一.对象与内存控制的知识点 1.java变量的初始化过程,包括局部变量,成员变量(实例变量和类变量). 2.继承关系中,当使用的对象引用变量编译时类型和运行时类型不同时,访问该对象的属性和方法是有区别的. 3.final修饰符特性. 二.java变量的划分与初始化过程 java程序的变量大体可以分为成员变量和局部变量,成员变量可以分为实例变量(非静态变量)和类变量(静态变量),一般我们遇到的局部变量会在下列几种情况中出现: (1)形参:在方法签名中定义的局部变量,由调用方为其赋值,随着方法结束消

  • Java静态和非静态成员变量初始化过程解析

    这篇文章主要介绍了Java静态和非静态成员变量初始化过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java中非静态成员变量.静态成员变量的初始化时机. 非静态变量 我们在这里分析三种结构,着重分析这三种结构的初始化顺序: 成员变量初始化语句: 成员变量初始化块: 构造函数: 示例一: public class MyTest { private String name = "wei.hu"; public MyTest(Str

  • 最详细的Java循环结构解析之for循环教程(适合小白)

    目录 循环结构的分类 for循环 基本语法 for循环的执行顺序 实例解析 嵌套for循环 基本语法 实例解析 总结 循环结构的分类 在Java中,循环结构一共分为三类: 1.for循环 2.while循环 3.do-while循环 for循环 for循环是被使用最广泛的循环,使用计数器来实现循环结构,多用于循环次数已知的情况. 在关键字for后面的括号中,会有三个语句: 第一个语句是初始化变量语句,允许声明一个或多个整型变量 第二个语句是循环条件语句,在每次循环开始前,判断循环条件是否成立 第

  • 解析C# 程序结构

    目录 C# Hello World 实例 编译 & 执行 C# 程序 在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考. C# Hello World 实例 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(Statements)& 表达式(Expressions) 注释 C# 文件的后缀为 .cs. 以

  • Java程序流程控制:判断结构、选择结构、循环结构原理与用法实例分析

    本文实例讲述了Java程序流程控制:判断结构.选择结构.循环结构原理与用法.分享给大家供大家参考,具体如下: 本文内容: 判断结构 if 选择结构 switch 循环结构 while do-while for for each break.continue return 首发时间:2017-06-22 21:34 修改时间: 2018-03-16 17:01 判断结构: java中使用if作为判断结构 if语句有三种格式: package study.program_struct; import

  • C 语言程序结构示例解析

    C 程序结构 在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考. C Hello World 实例 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 让我们看一段简单的代码,可以输出单词 "Hello World": #include <stdio.h> int main() { /* 我的第一个 C 程序 */ printf("Hello, World! \n&qu

  • 使用递归算法结合数据库解析成Java树形结构的代码解析

    1.准备表结构及对应的表数据 a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHAR2(50), PID NUMBER //父节点 ) b.表数据: insert into tb_tree (CID, CNAME, PID) values (1, '中国', 0); insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1); insert into tb_tree

  • Java数据结构二叉树难点解析

    前言 本章,我们主要需要了解以下内容 什么是线索二叉树 怎么去把二叉树线索化 怎么通过线索二叉树查找某个数的后继结点 二叉树的查看--二叉树怎们遍历 什么是线索二叉树 首先我们来了解一下什么是线索二叉树? 定义:一个二叉树通过如下的方法"穿起来":所有原本为空的右(孩子)指针改为指向该节点在中序序列中的后继,所有原本为空的左(孩子)指针改为指向该节点的中序序列的前驱. 再看一下为什么要有线索二叉树? 顾名思义,线索二叉树,肯定是根据线索查找,查找速度肯定更快. 线索二叉树能线性地遍历二

  • Java程序员需要掌握的英语词组

    本文为大家分享了Java程序员必须掌握的英语词组,供大家参考,具体内容如下 抽象类(abstract class):抽象类不能创建对象,主要用来创建子类.Java中的抽象类使用 abstract 修饰符定义. 抽象数据类型(abstract data type ADT):抽象数据类型指明了可能的类型和允许进行的操作,但是没有提供实现. 访问标识符(access specifier):用于方法或变量定义,限定了哪些类可以访问该方法或变量.Java中的访问标识符有 public.protected

随机推荐