Java程序编写(上)

2023-12-13 04:01:47

HelloWorld

1 创建一个以java为后缀名的文件
编写代码

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

其中,psvm是下述代码的缩写:

public static void main(String[] args) 

sout是下述代码的缩写:

System.out.println();

2 然后在终端运行Hello.java文件,进行Java源代码到Java字节码文件的编译过程:

javac Hello.java

这个过程包括词法分析、语法分析、语义分析和最终的字节码生成。
如果编译成功,将会生成与每个类对应的.class文件,这些文件包含了Java程序的字节码表示。

3 最后在终端运行生成的Hello程序:

java Hello

当运行java Hello时,实际上在启动Java虚拟机(JVM),并告诉它要运行名为Hello的Java程序。

具体来说,java命令用于启动Java应用程序。当你提供类名(不包括.class扩展名)作为参数时,Java虚拟机会尝试加载这个类,并执行它的main方法。在这种情况下,假设Hello是一个包含main方法的类,JVM将加载这个类并执行main方法。

注意,Hello.java文件里的类名要和文件名称保持一致(都是Hello)。

Java程序的运行机制

编译型程序在运行前需要将源代码一次性翻译成机器语言(C、C++),而解释型程序在运行时逐行或逐段地翻译并执行源代码(Python)。

Java通常被描述为一种同时具备编译型和解释型特性的语言。

这是因为Java源代码首先被编译成中间代码(字节码 .class文件)——编译型
但是,.class文件并不能直接运行在操作系统上,需要在Java虚拟机(JVM)上解释为二进制代码执行——解释型

Java程序的运行机制

  • 编写程序:首先,程序员使用文本编辑器编写Java源代码文件,通常以.java为扩展名。

  • 编译:使用javac命令对Java源代码进行编译,将其转换为字节码文件(.class文件),这个阶段会进行词法分析、语法分析、语义分析和最终的字节码生成。

  • 解释与执行:Java程序的字节码文件被Java虚拟机(JVM)解释执行。JVM将字节码文件加载到内存中,逐行或逐段地解释执行,并在特定平台上运行程序。

这个过程使得Java具有跨平台的特性,因为字节码文件可以在任何安装了Java虚拟机的平台上运行。

在这里插入图片描述
当然,这并不是Java程序运行机制的全部,还有类加载、垃圾回收等诸多细节,但总的来说,这三个阶段构成了Java程序的运行机制。

注释

Java的三种注释:

  • 单行注释
  • 多行注释
  • 文档注释
    在这里插入图片描述

标识符

  • 组成:标识符可以由字母、数字、下划线(_)和美元符号($)组成。
  • 首字符:标识符的首字符必须是字母、下划线(_)或美元符号($)。
  • 大小写敏感:Java是大小写敏感的语言,因此大写字母和小写字母被视为不同的字符。
  • 长度:标识符的长度没有限制,但只有前面的字符会被编译器处理,后面的字符会被忽略。
  • 关键字:不能使用Java的关键字作为标识符。例如,intclass等都是Java的关键字,不能用作标识符。

合法示例:myVariableMAX_VALUE_count$value 都是合法的标识符。

Java关键字

在这里插入图片描述
48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。

3个特殊直接量:true、false、null。

2个保留字:goto、const。

数据类型

在计算机编程中,"强类型"和"弱类型"是描述编程语言类型系统的术语。

强类型语言:
在强类型语言中,变量必须严格符合其声明的类型,不允许隐式类型转换。这意味着在使用变量之前,必须明确地定义其类型,并且在不同类型之间的转换通常需要显式的转换操作。强类型语言可以更早地发现一些潜在的类型错误,从而提高了程序的安全性和可靠性。Java和C#是典型的强类型语言。

弱类型语言:
在弱类型语言中,变量可以被隐式地转换为其他类型,甚至在不同类型之间进行混合运算,而不需要显式的类型转换。这种灵活性可能会导致一些意外的行为,因为编译器或解释器会尝试隐式地转换变量的类型以适应上下文。弱类型语言通常更灵活,但也更容易出现类型相关的错误。JavaScript和PHP是典型的弱类型语言。

Java数据类型分类

  • 基本类型(primitive type)
    • 数值类型
      • 整数类型 byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)
      • 浮点类型 float(4个字节)、double(8个字节)
      • 字符类型 char(2个字节)
    • boolean类型
  • 引用类型
    • 接口
    • 数组

在这里插入图片描述

整数拓展:
不同进制表示

在这里插入图片描述

浮点数拓展:

在这里插入图片描述

这里判断的是类型,因此返回false
因此最好完全避免使用浮点数进行比较!最好完全避免使用浮点数进行比较!最好完全避免使用浮点数进行比较!

银行业务可以使用BigDecimal数学工具类。

字符拓展:
所有字符的本质还是数字
Unicode编码占2个字节,0-65536,用十六进制表示。

在这里插入图片描述
字符串:
在这里插入图片描述
对于s1s2,由于它们都使用字符串字面值创建,因此它们指向的是相同的字符串对象,所以s1 == s2的结果是true

而对于s3s4,虽然它们的内容相同,但是使用new String()创建的对象会在堆内存中每次都创建一个新的对象,所以s3 == s4的结果是false

第一种方式使用字符串字面值创建字符串对象,它会利用Java的字符串池来重用字符串对象,从而节省内存并提高性能,因此推荐第一种方式,而第二种方式会创建一个新的字符串对象,即使字符串池中已经存在相同内容的字符串。

类型转换

Java是强类型语言,因此不同类型的数据需要转换至同一类型再进行运算。

  • 强制转换 (类型)变量名 转换等级是从高等级转换为低等级
    需要注意的是,强制类型转换可能会导致数据丢失或溢出(精度问题和内存溢出),因此在进行强制类型转换时应格外小心。
int a = 1000;  
byte b = (byte) a;  
System.out.println(b);  
  • 自动转换 转换等级是从低等级转换为高等级

在操作比较大的数的时候,注意溢出问题。

JDK7新特性:数字之间可以使用下划线进行分割。

在这里插入图片描述

变量

Java是一种强类型语言,每个变量都必须先声明其类型

type varName [= value];

可以使用逗号隔开声明多个同类型的变量。

变量作用域

  • 类变量
    需要使用static声明,可以在类中使用。
  • 实例变量
    从属于对象,如果不自行初始化,默认值为0 0.0 false null
    在使用new实例化一个对象之后才能调用(实例方法也是需要通过对象来调用)。
  • 局部变量
    必须声明和初始化

在这里插入图片描述

在这里插入图片描述

常量

final name = value;
final double PI = 3.14;

常量名通常使用大写字母。

在这里插入图片描述

变量命名规范

  1. 使用有意义的名称
  2. 类成员变量:驼峰命名法,例如monthSalary
  3. 局部变量:小写字母和驼峰原则
  4. 常量:大写字母和下划线,例如MAX_VALUE
  5. 类名:首字母大写和驼峰原则,例如DemoRun()

运算符

算数运算符

+ - * / % ++ --

赋值运算符

= += -= *= /=

关系运算符

> < >= <= == != instanceof

逻辑运算符

&& || !

位运算符

& | ^(异或) ~ <<*2>>/2>>>

条件运算符

? :

优先级

  1. 一元运算符(例如取反运算符 -、逻辑非 !
  2. 乘法和除法运算符(*/%
  3. 加法和减法运算符(+-
  4. 移位运算符(<<>>>>>
  5. 关系运算符(<<=>>=instanceof
  6. 相等运算符(==!=
  7. 位与运算符 &
  8. 位异或运算符 ^
  9. 位或运算符 |
  10. 逻辑与运算符 &&
  11. 逻辑或运算符 ||
  12. 条件运算符 ? :
  13. 赋值运算符(例如赋值 =、复合赋值 +=-=等)
  14. 逗号运算符 ,

包机制

在Java中,包(Package)是用来组织类和接口的命名空间的机制。它们被用来避免命名冲突,并且可以在逻辑上组织类和接口。

包的声明

在Java源文件的开头,可以使用 package 声明来指定该文件中的类所属的包。

package com.example.myapp;  

一般使用公司域名倒置作为包名。

包的作用

  • 命名空间管理:包可以防止类名冲突,因为不同的包可以包含同名的类。
  • 访问控制:可以使用包来限制对类的访问,通过使用访问修饰符(publicprotectedprivate)。
  • 组织管理:包可以帮助组织类和接口,使得项目更易于维护和管理。

包的导入

在Java中,使用 import 语句可以导入其他包中的类,以便在当前类中使用。

import java.util.ArrayList;  

在这里插入图片描述

package语句放在import语句前面。

Java Doc

  1. 使用IDEA自动生成帮助文档
    https://blog.csdn.net/Sunny_tx/article/details/129971282
    在这里插入图片描述

  2. 终端命令生成

    javadoc -encoding UTF-8 -charset UTF-8 Doc.java
    

补充材料:
JDK8帮助文档
阿里巴巴开发手册博客

文章来源:https://blog.csdn.net/qq_43606119/article/details/134894259
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。