写在一切之前
笔者学习 java 时已经学过 C 语言,故而许多内容会与 C 语言进行比较.同时,与 C 语言十分类似的部分会作删减,不会完全记录下来。
Java 语言概述
Java 的注释
Java 中有单行注释,多行注释,文档注释(Java特有的)
这里只介绍文档注释,大概格式如下:
/**
嘿嘿
@auther littleHamburger
@version 1.0
*/
Java API
API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。
下载 API 文档:在线看:https://docs.oracle.com/en/java/javase/17/docs/api/index.htm
Java变量与运算符
变量的数据类型
Java 中变量的数据类型分为两大类:
• 基本数据类型:包括 整数类型、浮点数类型、字符类型、布尔类型。
• 引用数据类型:包括数组、 类、接口、枚举、注解、记录。
字符串:String
String属于引用数据类型,使用一对双引号来表示一个字符串,内部可以包含0-多个字符.声明方式与基本数据类型类似.
示例代码如下:
String name = "little hamburger"
String可以与基本数据类型进行运算
String与基本数据类型变量间只能作连接运算,使用+表示.
示例代码如下:
int num1 = 10;
boolean b1 = true;
String str1 = "hello";
System.out.println(str1 + b1);
该代码的运行结果为"hellotrue".
如何将String类型变量转换为基本数据类型.
可以用Integer类型
示例代码如下:
String str = "123";
int num = Integer.parseInt(str);
逻辑运算符
此处作一个标记:在Java中,逻辑运算符可以用两个&&,也可以用&,但执行的顺序有所不同.
区分“&”和“&&”:
– 相同点:如果符号左边是 true,则二者都执行符号右边的操作
– 不同点:& : 如果符号左边是 false,则继续执行符号右边的操作
&& :如果符号左边是 false,则不再继续执行符号右边的操作
– 建议:开发中,推荐使用 &&
区分“|”和“||”:
— 相同点:如果符号左边是 false,则二者都执行符号右边的操作
— 不同点:| : 如果符号左边是 true,则继续执行符号右边的操作
|| :如果符号左边是 true,则不再继续执行符号右边的操作
建议:开发中,推荐使用 ||
Java流程控制
使用Scanner类从键盘获取数据
键盘输入代码的四个步骤:
- 导包:import java.util.Scanner;
- 创建 Scanner 类型的对象:Scanner scan = new Scanner(System.in);
- 调用 Scanner 类的相关方法(next() / nextXxx()),来获取指定类型的变量
- 释放资源:scan.close()
示例代码如下:
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args){
//第二步:创建一个Scanner类的实例
Scanner scan = new Scanner(System.in);
//第三步:调用Scanner类中方法,获取指定类型的变量
String name = scan.next();
System.out.println("name = "+name);
int age = scan.nextInt();
double weight = scan.nextDouble();
boolean isSingle = scan.nextBoolean();
//特别的:这行代码意为:取字符串第一位的字符,相当于取了一个char类型变量
char gender = scan.next().charAt(0);
//防止内存泄露
scan.close();
}
}
尝试通过math类的方法获取一个随机数
random()调用之后,会返回一个介于0.0-1.0之间的double型的随机数.
class RandomTest{
public static void main(String[] args){
double d1 = Math.random();
System.out.println("d1 = " + d1);
}
}
Java数组
示例程序:
double[] prices;
prices = new double[]{20,30,23,50};
//也可以写作:
double[] prices = new double[]{20,30,50,10,20};
数组特征:
- 数组中的元素在内存中是依次紧密排列的,有序的.
- 数组,属于引用****数据类型的变量.数组的元素,既可以是基本数据类型,也可以是引用数据类型.
- 数组,一旦初始化完成,其长度就确定了,并且该长度不可更改.
动态初始化:
数组变量的赋值与数组元素的赋值操作分开进行.
//其他正确方式::
int arr[] = new int[4];
int[] arr1 = {1,2,3,4};
//错误方式:
int[] arr2 = new int[3]{1,2,3};
数组的长度:用于描述数组容器中容量的大小.
使用length属性表示:
System.out.println(arr.length);
数组的默认初始化值:
以动态初始化方式为例:
整形数组元素默认初始化值:0
浮点型数组元素默认初始化值:0.0
字符型数组元素默认初始化值:0 或者理解为 ‘\u0000’;
boolean型数组元素的默认初始化值:false
引用数组类型的默认初始化值:null
Sp:一维数组的内存解析
- Java中内存结构是如何划分的?(JVM运行时的内存环境)
- 将内存区域划分为五个部分:程序计数器,虚拟机栈,本地方法栈,堆,方法区。
- 与数组相关的内存结构:
- 虚拟机栈:用于存放方法中声明的变量。
- 堆:用于存放数组的实体(即数组中所有的元素)。
- 举例:具体一维数组的代码的内存解析
Arrays工具类的使用
java.util.Arrays类为操作数组的工具类,包含了用来操作数组的各种方法。如:
//比较两个数组元素是否依次相等
boolean ifEquals = Arrays.equals(arr1,arr2);
//输出数组元素信息static String toString(int[] a):
System.out.println(Arrays.toString(arr1));
//void fill(int[] a,int va);将指定值填充到数组之中。
Arrays.fill(arr1,10);
//void sort(int[] a)使用快速排序算法实现的排序。
int[] arr = new int[]{1,4,5,6,7};
Arrays.sort(arr);
//int binarySearch(int[] a,int key);
//使用前提:当前数组必须有序
Arrays.binarySearch(arr,5);
结语
祝大家好好学习,天天向上