# Java 程序基础
我们先剖析一个完整的Java程序,它的基本结构是什么:
/**
* 可以用来自动创建文档的注释
*/
// 类名必须以英文字母开头,后接字母,数字和下划线的组合
// 习惯以大写字母开头
// 注意到 public 是访问修饰符,表示该 class 是公开的
public class Demo {
// 这里的方法名是main,返回值是void,表示没有任何返回值。
public static void main(String[] args) {
// 向屏幕输出文本:
System.out.println("Hello, world!");
// 这是注释...
/*
这是注释
blablabla...
这也是注释
*/
}
}
# 标识符
public class Demo01 {
public static void main(String[] args) {
// 所有的标识符都应该以 字母 $ _ 开始
// 首字符之后可以是 字母 $ _ 数字
// 注意标识符是大小写敏感的
String hello = "Hello";
String world = "World";
String $hello = "Hello";
String hello1 = "Hello";
String hello_world = hello + world + "!";
System.out.println(hello_world);
}
}
# 数据类型
Java 是强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
public static void main(String[] args) {
String a;
System.out.println(a); // 这里会报错
}
Java 的数据类型分为两大类
- 基本类型
- 引用类型
# 基本类型
基本数据类型 | 具体类型 | 细节 |
---|---|---|
数字 整数 | byte | 1 个字节 8 位二进制数 |
数字 整数 | short | 2 个字节 16 为二进制数 |
数字 整数 | int | 4 个字节 32 位数,可用来表示 10 位时间戳 |
数字 整数 | long | 8 个字节 64 位数,可用来表示 13 位时间戳 |
数字 浮点数 | float | 4 个字节 |
数字 浮点数 | double | 8 个字节 |
字符 | char | 2 个字节 表示单个字符 |
布尔值 | boolean | 1 个位 表示真/假 (是/否) |
public static void basic() {
// 整数
byte num1 = 10;
short num2 = 20;
int num3 = 30; // int 最常用
long num4 = 30L; // long 数字后面要加 L
// 小数
float num5 = 2.71828f; // 数字后面要加 f
double num6 = 3.14159265358979323846;
// 字符
char g = 'G'; // 字符要使用单引号
// 布尔值
boolean flag = true;
flag = false;
}
# 引用类型
引用数据类型 | 具体类型 | 细节 |
---|---|---|
数字 整数 类 | BigInteger | 表示任意大小的整数 |
数字 浮点数 类 | BigDecimal | 表示一个任意大小且精度完全准确的浮点数 |
字符串 类 | String | 表示多个字符 |
# 示例代码
public class Demo02 {
public static void main(String[] args) {
// Java 是强类型语言
// 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
/**
* String a;
* System.out.println(a); 这里会报错
*/
basic();
number();
reference();
}
public static void basic() {
// 整数
byte num1 = 10;
short num2 = 20;
int num3 = 30; // int 最常用
long num4 = 30L; // long 数字后面要加 L
// 小数
float num5 = 2.71828f; // 数字后面要加 f
double num6 = 3.14159265358979323846;
// 字符
char g = 'G'; // 字符要使用单引号
// 布尔值
boolean flag = true;
flag = false;
}
public static void number() {
// ====================
System.out.println("====================进制");
// ====================
int i2 = 0b10; // 二进制的 10 表示十进制的 2
int i10 = 10;
int i8 = 010; // 八进制的 10 表示十进制的 8
int i16 = 0x10; // 八进制的 10 表示十进制的 16
System.out.println(i2);
System.out.println(i10);
System.out.println(i8);
System.out.println(i16);
// ====================
System.out.println("====================浮点数的问题");
// ====================
// 浮点数的问题
// 精度
float f = 0.3f;
double d1 = 0.1 + 0.2;
double d2 = 0.3;
System.out.println(f == d1); // false
System.out.println(d1 == d2); // false
// 溢出
float f1 = 12345678910f;
float f2 = f1 + 1;
System.out.println(f1 == f2); // true
// ====================
System.out.println("====================强制转换");
// ====================
// 字符 转 Int 输出:字符对应的 Unicode 码
// 字符的本质还是数字
char c1 = '1';
char c2 = 'a';
char c3 = '中';
char c4 = '\u0061'; // 16 进制的 61 表示 97 最终输入 a
System.out.println(c1); // 1
System.out.println((int)c1); // 49
System.out.println((int)c2); // 97
System.out.println((int)c3); // 20013
System.out.println(c4); // a
}
public static void reference() {
Integer num0 = 0;
String Gauss = "Gauss"; // 字符串要使用双引号
// ====================
System.out.println("====================字符串常量池");
// ====================
// 字符串常量池
// 为了提高性能并减少内存的开销,JVM在实例化字符串常量时进行了一系列的优化操作
// 1.在JVM层面为字符串提供字符串常量池,可以理解为是一个缓存区
// 2.创建字符串常量时,JVM会检查字符串常量池中是否存在这个字符串
// 3.若字符串常量池中存在该字符串,则直接返回引用实例;若不存在,先实例化该字符串,并且,将该字符串放入字符串常量池中
String sa = "abc";
String sb = "abc";
System.out.println(sa == sb); // true
String sc = new String("abc");
String sd = new String("abc");
System.out.println(sc == sd); // false
}
}
# 类型转换
public class Demo05 {
public static void main(String[] args) {
/**
* 注意点
* 1. 不能对布尔值进行转换
* 2. 不能把对对象类型转换位不相干类型
* 3. 高容量到低容量需要强制转换
* 4. 转换的时候可能存在内存溢出或者丢失精度
*/
// 强制转换 高到低
int i = 128;
byte b = (byte) i;
System.out.println(b); // - 128
float f = 61.8f;
double d = 61.8;
System.out.println((int) f); // 61
System.out.println((int) d); // 61
// 自动转换 低到高
long l = (long) i;
System.out.println(l); // 128
char c = 'a';
System.out.println(c + 1); // 98
}
}
# 变量和作用域
# 运算符
# 基本运算符
# 其他运算符
# Java 包机制
什么是 pom.xml
pom.xml 是 Maven 项目的核心配置文件,它是 项目对象模型- Project Object Model (POM)的缩写。POM 定义了项目的所有属性,包括项目的名称、版本、依赖关系、构建配置等。 使用 pom.xml,我们可以轻松地管理项目的构建和依赖关系,让我们能够更专注于业务逻辑的开发。
# JavaDoc
package com.example.doc;
/**
* @author gausszhou
* @version 1.0
* @since 1.8
*/
public class Demo01 {
String name;
public static void main(String[] args) {
}
/**
* @param name
* @return {String}
* @throws Exception
*/
public String test(String name) {
return name;
}
}