java基础语法 ==> 面向对象 ==> API ==> 字符串 ==> 集合 ==>
进制
{二:只有01
十:0~9
八:0~7 代码中以0开头
十六:0~9 和 a~f 代码中以0x开头
}
逻辑运算符
与“&”同真为真
或“|”同假为假
异或“^”相同为假
非“!”取反
短路逻辑运算符
作用一致但从左往右满足条件即停止
与“&&”
或”||“
java内存分配
栈内存
方法运行内存,运行完毕就出栈
堆内存
new出来的会在此开辟空间产生地址
cmd命令
盘符名称 + 冒号 \ 盘符切换
dir \ 查看当前路径内容
cd 目录 \ 进入单级目录
cd 目录1\目录2... \进入多级目录
cd.. \回退上一级目录
cd\ \回退到盘符目录
cls \清屏
exit \退出命令窗口
java基础语法
基本数据类型(粗体常用)
整型
byte,short,int(默认),long
浮点型
float, double(默认)
字符型
char
布尔型
boolean
PS:在直接赋值时long,double需加上L,F long a = 10000000000000000L double b = 1e10F
标识符命名规则
硬性规则
只能包含“09”,“az”,"A~z","_","$"
不能以“0~9”开头
不能是关键字
区分大小写
软性规则
驼峰命名,见名知意
| 维度 | c | c++ | java | python | php |
|---|---|---|---|---|---|
| 允许的字符 | 字母(ASCII 为主)、数字、下划线(_) | 字母(含 Unicode)、数字、下划线(_) | 字母(含 Unicode)、数字、_、$ | 字母(含 Unicode)、数字、_ | 字母(含 Unicode)、数字、_(以字母 /_开头) |
| 区分大小写 | 是(如a和A不同) | 是 | 是 | 是 | 是(变量名严格区分;函数 / 类名不严格区分,但标识符本身视为不同) |
| 特殊字符支持 | 仅支持_ | 仅支持_ | 支持$(不推荐)、_ | 仅支持_ | 仅支持_($是变量前缀,非标识符一部分) |
| Unicode字符支持 | C89 不支持;C99 + 有限支持(少用) | C++11 明确支持(如中文) | 支持(如中文) | 支持(如中文、emoji) | PHP 7.0 + 支持(如中文) |
| 下划线的特殊含义 | 全局作用域下划线开头可能被标准库保留 | 双下划线 / 下划线 + 大写字母被编译器保留 | 无特殊含义(可单独使用) | 单下划线表示 “私有”;双下划线触发名字修饰 | 无语法强制含义,约定_开头表示私有 |
| 关键字限制 | 不能使用 C 关键字 | 不能使用 C++ 关键字 | 不能使用 Java 关键字 | 不能使用 Python 关键字 | 不能使用 PHP 关键字 |
键盘录入
先导包
点击查看代码
`import java.until.Scanner`
创建对象
点击查看代码
`Scanner sc = new Scanner(System.in);`
接收数据并赋值再输出
点击查看代码
int i = sc.nextInt();
System.out.println(i);
运算符
算术运算符
| 运算符 | 功能说明 | c | c++ | python | php | java |
|---|---|---|---|---|---|---|
| + | 加法 / 字符串拼接 | 支持(数字) | 支持(数字、字符串对象) | 支持(数字、字符串) | 支持(数字);字符串用. | 支持(数字、字符串) |
| - | 减法 / 负号 | 支持 | 支持 | 支持 | 支持 | 支持 |
| * | 乘法 | 支持 | 支持 | 支持;还可用于字符串重复(如"a"*3) | 支持 | 支持 |
| / | 除法 | 整数除法截断(如5/2=2浮点数除法正常 | 同 C | 结果为浮点数(如5/2=2.5);//为向下取整 | 结果为浮点数(如5/2=2.5) | 同c |
| % | 取模(余数) | 结果与被除数同号(如5%2=1,-5%2=-1) | 同 C | 结果与除数同号 | 同 C | 同 C |
| ++/-- | 自增 / 自减 | 支持(前置 / 后置) | 同 C | 不支持(需用x +=1) | 同 C | 同 C |
| ** | 幂运算 | 不支持(需用pow()) | 同 C | 支持(如2**3=8) | 同py | 不支持(需用Math.pow()) |
比较运算符
| 运算符 | c | c++ | python | php | java |
|---|---|---|---|---|---|
| 相等 | |||||
| 不相等 | |||||
| 大于,小于 |
逻辑运算符
赋值运算符
位运算符
判断与循环
和c/c++几乎完全一致
while(i--)c/c++合法,java不合法
while(判断语句)java合法
数组
两种定义(完整)
1.数据类型[] 数组名
2.数据类型 数组名[] \\同c/c++
int[] array = new int[]{1, 3, 4};
int array[] = new int[]{1, 3, 4};
一般简写
int array[]={1, 3, 4};
int[] array={1, 3, 4};
二维数组
int [][] arr = new int[][]{{1, 2, 3}, {4, 5, 6, 7}};
获得数组长度==>数组名.length
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度];
默认初始化为0(根据数据类型不同而不同)
复制数组
Java 中数组属于引用类型
int a[] ={1,2,3,4};
int b[] = a;
此时无论改变a或b都会改变数组元素
三种方法
- Arrays.copyOf()//简单
java.util.Arrays类提供
新数组 = Arrays.copyOf(原数组, 新数组长度);
点击查看代码
import java.util.Arrays;public class Test {public static void main(String[] args) {int a[] = {1, 2, 3, 4};// 创建a的副本(长度与a相同)int b[] = Arrays.copyOf(a, a.length);b[0] = 100; // 修改b的元素System.out.println(a[0]); // 输出1(a不受影响)System.out.println(b[0]); // 输出100(仅b被修改)}
}
- System.arraycopy()//高效
System.arraycopy(原数组, 原数组起始索引, 目标数组, 目标数组起始索引, 复制长度);
点击查看代码
public class Test {public static void main(String[] args) {int a[] = {1, 2, 3, 4};int b[] = new int[a.length]; // 先创建与a长度相同的新数组// 复制a的所有元素到b(从索引0开始,复制4个元素)System.arraycopy(a, 0, b, 0, a.length); b[1] = 200; // 修改b的元素System.out.println(a[1]); // 输出2(a不受影响)System.out.println(b[1]); // 输出200(仅b被修改)}
}
- 遍历复制//基础
for循环遍历复制
点击查看代码
public class Test {public static void main(String[] args) {int a[] = {1, 2, 3, 4};int b[] = new int[a.length]; // 新数组// 手动复制每个元素for (int i = 0; i < a.length; i++) {b[i] = a[i];}b[2] = 300; // 修改b的元素System.out.println(a[2]); // 输出3(a不受影响)System.out.println(b[2]); // 输出300(仅b被修改)}
}
方法
程序中的最小执行单元
模板
点击查看代码
public static 返回值类型 方法名(参数){方法体;return 返回值;
}
点击查看代码
方法名(实参);
方法重载
使用场景
同一个类中,定义多个方法名相同但参数列表不同的方法
1.方法名必须相同;
2.参数列表必须不同(至少满足以下一种):
参数的数量不同;
参数的类型不同;
参数的顺序不同(当参数类型不同时,顺序不同才有效);
3.与返回值类型、访问修饰符无关(仅返回值不同或修饰符不同,不构成重载)。
基本数据类型,引用数据类型
前者将数据储存在自己的空间中
后者将数据存在其他空间中,自己的空间中储存的地址值
面向对象
先设计类,再获取方法
public class 类名{
1、成员变量
2、成员方法
}
点击查看代码
public class test{//属性(成员变量)String a;int b;//行为(方法)public void t(){}public void e(){}
}
封装
使用场景
通过限制直接访问,强制外部通过 “规范的接口” 操作数据
private修饰,是成员只能在本类访问
点击查看代码
public class text{private String name;private int age;private String gender;
}
点击查看代码
public class text{private int age;public void setAge(int a){age = a;}public int getAge(){return age;}
}
text t1 = new text();
t1.set(18);