目录
java基本语法
什么是JDK、JRM、JVM
- 因为java语言有跨平台性,而该原理就是在需要运行java应用程序的操作系统上,先安装一个java虚拟机(JVM),由JVM来复杂java程序在该系统中的运行
- JDK:是提供给java开发人员使用的,其中包含了java的开发工具,也包含了JRE
- JRE:java运行环境
关键字与保留字
- 关键字定义:被Java语言赋予了特殊含义,用于专门用途的字符串
- 特点:关键字中所有字母都为小写
- 保留字:现有java版本尚未使用,但以后版本可能会作为关键字使用(goto、const)
标识符
- java对各种变量、方法和类等要素命名时使用的字符序列(凡是自己可以起名字的地方都叫标识符)
- 定义合法标识符规则
- 由26个英文字母大小写,0-9,_或$组成
- 数字不能开头
- 不可以使用关键字和保留字,但能包含
- java中严格区分大小写
- 标识符不能包含空格
变量
- 使用变量的注意事项
- 每个变量必须先声明,后使用
- 使用变量名来访问这块区域的数据
- 变量的作用域:其定义所在的一对{}内
- 变量只有在其作用域内才有效
- 同一个作用域内,不能定义重名的变量
- java的浮点型常量默认为double型,声明float型常量,须后加 f 或 F
- boolean类型数据只允许取值true和false,无null
- 不可以使用0或非0的整数替代false和true
基本数据类型转换
- 自动类型转换:容量小的类型自动转换为容量大的数据类型
- 强制类型转换:将容量大的数据类型转换为容量小的数据类型,但可能造成进度降低或溢出
- 字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现
- Boolean类型不可以转换为其它的数据类型
- 注意事项
- byte、short、char之间不会相互转换
- Boolean类型不能与其它数据类型运算
- 当把任何基本数据类型的值和字符串进行连接运算时,基本数据类型的值将自动转化为字符串类型
- 变量的的分类--按声明的位置的不同
- 在方法体外,类体内声明的变量称为成员变量
- 在方法体内部声明的变量称为局部变量
- 二者在初始化值方面的异同
- 同:都有声明周期
- 异:局部变量除形参外,需显式初始化
运算符
- &与&&的区别
- &,左边无论真假,右边都进行运算
- &&,如果左边为真,右边参与运算;如果左边为假,那么右边不参与运算
- | 和 || 的区别
- | ,左边无论真假,右边都进行计算
- ||,如果左边为真,右边不参与运算;如果左边为假,右边参与运算
- ^(异或):当左右不同时,结果为true
如何从键盘获取变量
import java.util.Scanner;
Scanner sc = new Scanner(System.in); //Scanner的实例化
int num = sc.nextInt(); //获取一个整数
String name = sc.next(); //获取一个字符串
double weight = sc.nextDouble(); //获取一个浮点型的数
boolean is = sc.nextBoolean(); //获取布尔型
//输入三个数
Scanner sc = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
如何获取随机数
//获取一个随机数:10-99 random生成的数默认为double型
int value = (int)(Math.random() * 90 + 10); //[0.0,1.0)--->[0.0,90.0)--->[10.0,100.0)--->[10,99]
// 公式:[a,b] : (int)(Math.random() * (b - a + 1) + a)
package Day_01.demo;
/*
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入
一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
*/
import java.util.Scanner;
import java.util.Random;
public class LiuChengKongZhi {
public static void main(String[] args){
//获取一个随机数:10-99 random生成的数默认为double型
int value = (int)(Math.random() * 90 + 10); //[0.0,1.0)--->[0.0,90.0)--->[10.0,100.0)--->[10,99]
// 公式:[a,b] : (int)(Math.random() * (b - a + 1) + a)
System.out.println("请输入一个两位数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int valuege = value % 10;
int valueshi = value / 10;
int numge = num % 10;
int numshi = num / 10;
if(value == num){
System.out.println("奖金10000美元");
}else if((valuege == numshi)&&(valueshi == numge)){
System.out.println("奖金3000美元");
}else if((valuege == numge)||(valueshi == numshi)){
System.out.println("奖金1000美元");
}else if((valuege == numshi)||(valueshi == numge)){
System.out.println("奖金500美元");
}else {
System.out.println("没中奖");
}
System.out.println("中奖号码是:"+value);
}
}
程序流程控制
-
一些注意事项
-
case子句中的值必须是常量,不能是变量名或不确定的表达式值
-
break语句用来执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch
-
default子句是可任选的,位置也是灵活的;当没有匹配的case时,执行default
-
break是终止本层循环,continue是终止本次循环
-
break、continue之后不能有其他语句,因为程序永远不会执行其后的语句
-
数组
- 数组本身是引用数据类型,而数组中的元素可以是任何数据类型
- 创建数组对象会在内存中开辟一整块连续空间,而数组名汇总引用的是这块连续空间的首地址
- 数组的长度一旦确定下来,就不能修改
- java语言中声明数组时不能指定其长度 eg:int a[5];
- java中使用关键字new来创建数组,定义并用运算符new为之分配空间后,才可以引用数组中的每个元素
-
每个数组都有一个属性length指明它的长度,eg:a.length
//创建基本数据类型的一维数组
public class ShuZhu {
public static void main(String[] args){
int s[];
s = new int[10];
for(int i=0;i<10;i++){
s[i] = 2 * i + 1;
System.out.println(s[i]);
}
}
}
Arrays工具类的使用
package Day_01.demo;
import java.lang.reflect.Array;
import java.util.Arrays;
public class ArrayTest_3 {
public static void main(String[] args){
//boolean equals(int[] a,int[] b) 判断两个数组是否相等
int[] arr1 = new int[]{1,2,3,4};
int[] arr2 = new int[]{1,3,2,4};
boolean isEquals = Arrays.equals(arr1,arr2);
System.out.println(isEquals);
//String toString(int[] a) 输出数组信息
System.out.println(Arrays.toString(arr1));
//void fill(int[] a,int val) 将指定值填充到数组之中
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));
//void sort(int[] a) 对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值
int[] arr3 = new int[]{-10,20,27,39,55,89};
int idex = Arrays.binarySearch(arr3,55);
System.out.println(idex);
}
}
false
[1, 2, 3, 4]
[10, 10, 10, 10]
[1, 2, 3, 4]
4
数组中涉及的常见算法(复制、排序、查找)
注意事项
-
java语言严格区分大小写
-
一个源文件最多只能有一个public类,其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名