Java基础
cmd打开Java代码#
//代码编译
javac Hello.java
//运行编译码
java Hello
输入输出#
输入#
import java.util.Scanner;
public class Test1 {
//编写一个 main 方法
public static void main(String[] args) {
// 1. 创建 Scanner 对象 , new 创建一个对象,体会
// 2. 当程序执行到 next() 方法时,会等待用户输入~~~
Scanner obj1 = new Scanner(System.in);
System.out.println("请输入名字");
String name = obj1.next();
System.out.println("请输入年龄");
int age = obj1.nextInt();
System.out.println("人的信息如下 名字:" + name + " 年龄:" + age );
}
}
输出#
System.out.println(" ");
JDK、JRE 和 JVM 的关系#
-
JDK = JRE + 开发工具集(如 Javac、java编译工具等)
-
JRE = JVM + Java SE标准类库
-
只测试只需要 JRE即可
Java八大数据类型#
数据转换#
自动转换规则#
-
容量大的类型能装容量小的(自动转换)
double name1 = 1.1F
, 反之报错 -
两个数字类型加减运算,先将所有值自动装换成他们当中容量最大的类型
float num1 = 10 + 1.2F
-
★(byte、short)和 char 它们之间相互赋值,不能自动转换
byte a = 10; char b = a; 这样做是报错的
-
★ 但是 byte、short、char 它们可以相加减,计算之前就会把它们全转成int类型
short a = 10; char b = 'b'; int c = a + b; 打印c会得108
强制转换规则#
- 直接强制转换,注意溢出问题
double a = 1.22;
System.out.println((byte)a); // 输出结果为:1
- 转成字符串String的统一方式
double a = 1.22;
String b = a + "";
System.out.println(b);
- 字符串转成其他类型的统一方式:
double c = Double.parseDouble(b);
- 字符串String转成char用: b.charAt(下标)
进制转换#
- 二进制开头:0b
- 八进制开头:0
- 十六进制开头:0x
所有进制转成十进制#
十进制转成所有进制#
二进制转八进制看3位,二进制转十六进制看4位#
运算符#
算术运算符#
除法 10 / 4 结果是2 ; 10.0 / 4 结果是2.5
#
取模(取余) 10 % 3 = 1
#
- 有负数的取模公式 : a % b = a - a / b * b
-10 % 3 = -1 、-10 % -3 = -1、 10 % -3 = 1
前自增(先自增后赋值) int a = 1; int b = ++a; 输出b结果是:2
#
- ① temp = i + 1 ② temp = i ③ i = temp
后自增(先赋值后自增) int a = 1; int b = a++; 输出b结果是:1
#
- ① temp = i ② i = i + 1 ③ i = temp
逻辑运算符#
- a&b 逻辑与: 两边都会运算,两个都得ture, 才true
- a|b 逻辑或:两边都会运算,其中一个ture,就true
- a&&b 短路与:第一个是false,后面就不运算了
- a||b 短路或: 第一个是true,后面就不运算了
- a^b 逻辑异或: a和b要不同,才为true
位运算符#
原码、反码、补码#
7种位运算符#
示例运算#
流程控制#
三大流程控制语句: 顺序控制、分支控制、循环控制
分支控制#
- 单分支 if(){}
- 双分支 if() else{}
- 多分支 if(){} else if(){} ... else{}
- 分支嵌套 if(){if()
- switch分支
String name = "Jan";
switch(name){ // 符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型
case "apple":
System.out.print("是他" + name);
break;
case "Jan":
System.out.print("是他" + name);
break;
case "Lemon":
System.out.print("是他" + name);
break;
default:
System.out.print("全都不是");
break;
}
循环控制#
注意点
- for 和 while 执行循序都是 ①循环变量初始化; ②条件; ③代码体; ④循环变量迭代 i++
- do while 执行循序则是 ①循环变量初始化;②代码体; ③循环变量迭代 i++; ④条件;
- 多重循环嵌套 三者可以相互嵌套
- break; 终止最近的一层循环
- continue; 跳过循环中某个if条件
数组#
1. 数组里面只能是同类型的数据
2. 二维数组必须先定义值为数组
动态初始化#
-
创建一个有10个0的数组
int arr = new int[10]; -
创建一个二维数组
int[][] arr = new int[2][];
静态初始化#
double arr[] = {1.0, 2.0, 3.0}
数组拷贝#
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[arr1.length];
for(int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
数组颠倒#
for(int i = 0; i < arr.length / 2; i++){
int temp;
temp = arr[arr.length - 1 - i];//保存
arr[arr.length - 1 - i] = arr[i];
arr[i] = temp;
}
在数组里面找值#
String[] names = {"a", "b", "c"};
int index = -1;
String findName = "b";
for(int i = 0; i < names.length; i++) {
if("findName".equals(names[i])) {
System.out.println("找到 " + findName + "下标为= " + i);
index = i;
break;
}
}
if(index == -1) { //没有找到
System.out.println("sorry ,没有找到 " + findName);
}
冒泡排序 Bubble Sorting#
int[] arr = {1, 2, 3};
for( int i = 0; i < arr.length - 1; i++) {
for( int j = 0; j < arr.length - 1 - i; j++) {
//如果前面的数>后面的数,就换位
if(arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)