一、简单的创建一个JAVA程序
1.public class 名字(名字与文件名一致)
2.public class 一个文件只能有一个
3.有几个类就有几个字节码文件(即.class后缀的文件)
public class MyClass {
public static void main(String[] args) {
System.out.printf("Hello, World!");
}
}
4.一个类只能有一个main方法

二、输入输出
1.输入
【1】输入一个变量
导入包:
import java.util,Scanner;
可以理解为申请一块存储的地方来存储变量:
Scanner scan = new Scanner(System.in);
(1)读入一个int的整数:变量名.nextInt();
int n = scan.nextInt();
(2)读入字符串:
变量名.next();(遇到空格结束读取)
变量名.nextLine();(读取一行,遇到空格不会结束)
String s = scan.next(); 或 String s = scan.nextLine();
(3)读入float的浮点型:变量名.nextFloat();
float a = scan.nextFloat();
注:回车也会被字符串读取识别

生成随机数

【2】循环多个输入
Scanner scanner = new Scanner(System,in);
while(Scanner.hasNextInt()){
int n = scanner.nextInt();
//可写其他语句
}
在IDEA上,使用Ctrl+D即可结束输入
2.输出
System.out.printf(同C,即带\n可换行);
System.out.println(data/“word”);//带换行
System.out.print(data/"word");//不带换行
注释:
单行注释://注释内容
多行注释:/*注释内容*/
文档注释:/**注释内容*/
三、标识符
1.基本规则
标识符可以由字母、数字、美元符号($)以及下划线(_)组成。数字不能作为标识符的开头。
2.命名规范
“大驼峰”:每个单词的首字母大写,其余字母小写,包括第一个单词。
例如:FirstProject
“小驼峰”:第一个单词首字母小写,其余每个单词的首字母大写,其余字母小写。
例如:firstProject
四、关键字
1.基本数据类型(8个)
| 数据类型 | 关键字 | 内存占用 |
| 字节型 | byte | 1字节 |
| 短整型 |
short | 2字节 |
| 整型 | int | 4字节 |
| 长整型 | long | 8字节 |
| 单精度浮点数 | float | 4字节 |
| 双精度浮点数 | double | 8字节 |
| 字符型 | char |
JAVA中的char为2字节 (即16比特位,1Byte=8bits) |
| 布尔型 | boolean | 没有明确规定 |
注:
不管32位和64位,字节数一样
在 Java当中 没有所谓的无符号数字,没有全局变量。
(全局变量是在程序的最外层定义的变量,其作用域覆盖整个程序,任何函数或代码块都能对它进行访问与修改。)
超出内存范围会报错
五、基本数据类型
1.初始化
JAVA中的变量必须初始化(或默认初始化为某值)。
int a =10;
long b = 10;
long c = 10L;//建议加大写的L,表示它是long类型的。
System.out.println(a);
System.out.println(b);
System.out.println(c);
结果:
10
10
10
2.浮点型
double d =5.19;
float f =(float)5.19;//方式一
float p=5.19f;//方式二
float c = 5.19//error(java: 不兼容的类型: 从double转换到float可能会有损失)
double类型精度丢失(与C一致)浮点数是近似值而不是精确值
3.字符型
| JAVA | C |
| 字符型没有负数,没有符号位。它是一个无符号的 16 位整数,范围从 0 到 65535 |
char 类型是否有符号是由编译器决定的: 有些编译器将 char 视为有符号(范围:-128 到 127) |
| Unicode字符集(不仅可以表示中文,可以表示世界上几乎所有的字符) | ASCII字符集(如果需要在 C 语言中处理 Unicode,通常需要使用 wchar_t 类型和相关的宽字符函数,或者直接操作 UTF-8 编码的字符串。) |
4.布尔类型
仅有ture和false。(与C语言不同,没有非0为真,0为假)
拓展
各个数据类型最大值如下,最小值同理,MIN_VALUE
byte maxByte = Byte.MAX_VALUE; // 127
short maxShort = Short.MAX_VALUE; // 32767
long maxLong = Long.MAX_VALUE; // 9223372036854775807
float maxFloat = Float.MAX_VALUE; // 3.4028235E38
double maxDouble = Double.MAX_VALUE; // 1.7976931348623157E308
五、数据转换
基本与C一致:不相关的类型不能强制转换
1.强制类型转换(显示)
int a = 20;
long b = 10L;
a = b;//不能进行直接赋值(范围大的类型给小类型)
b = a;//通过

进行强制类型转换:编译通过!
public class FirstProject {
public static void main(String[] args){
int a = 20;
long b = 10L;
a = (int)b;
}
}
2.自动类型转换(隐式)
public class FirstProject {
public static void main(String[] args){
int a = 20;
long b = 10L;
b = a;//a被默认转换为long(小给大)
System.out.println(520);//默认int类型
System.out.println(5.2);//默认为double类型
}
}
六、类型提升
1.整型
运算时,a自动提升为long类型。

class SecondProject {
public static void main(String[] args) {
int a = 2025;
long b = 520L;
int c = (int) (a + b);//方法一
long d = a + b;//方法二
}
}
2.byte与byte
byte和short低于4字节,会被默认提升为int进行计算。
byte c = (byte) (a + b);// 可以通过,但不建议,可能会产生溢出
byte a =25;
byte b =5;
byte c = (byte) (a + b);// 可以通过,但不建议
int d = a + b;
七、字符串类型
1.String
C中没有字符串类型,C中的字符串\0结尾。
JAVA中有字符串类型,不以\0结尾。
String s = "love";
2.拼接+
(1)一遇到字符串,+变成拼接,还未遇到就先计算数值。
public class FirstProject {
public static void main(String[] args){
int a = 5;
int b = 20;
System.out.println("a:"+a +" b:"+b);
System.out.println("ab: "+a+b);
System.out.println(a+b+"love");
}
}
Result:

(2)字符串拼接(同C++)
public class FirstProject {
public static void main(String[] args){
String s1 = "love ";
String s2 ="you";
System.out.println(s1+s2);
}
}
Result:

3.将数值换为字符串类型
选取对应的数据类型:

将数值换为字符串类型:
public class FirstProject {
public static void main(String[] args){
//方法一
int a = 520;
String s1 = a+"";
System.out.println(s1);
//方法二
String s2 = String.valueOf(2025);
System.out.println(s2);
}
}

八、运算符
1.算术运算符+-*/%
与C基本一致。JAVA可以对小数求余。
2.增量运算符+= -= *= %=
a+=b;会自动进行类型匹配 ,匹配类型为被赋值的变量(此处为a)。其他同理。
int a = 12;
double b = 5.22;
a =(int)(a+b); 它等价于 a+=b;自动进行类型匹配
public class FirstProject {
public static void main(String[] args){
int a = 12;
double b = 5.22;
a+=b;//自动进行类型匹配
System.out.println(a);
}
}
结果:17
3.自增/自减运算符++ --
与C基本一致
public class FirstProject {
public static void main(String[] args){
int a = 10;
int c = a++;
System.out.println(a);
System.out.println(c);
}
}
结果
11
10
注意
JAVA:a = a++;结果为10
C:a = a++;结果为11
4.关系运算符
关系运算符== != < > >= <=
关系运算符得到的结果只有true或false
public class FirstProject {
public static void main(String[] args) {
int a = 2025;
int b = 5;
System.out.println(a>b);
System.out.println(a>=b);
System.out.println(a<b);
System.out.println(a<=b);
System.out.println(a!=b);
}
}
结果:

5.逻辑运算符
&& || !
【1】&&
表达式1 && 表达式2
(1)两个表达式都必须是布尔表达式。
(2)若第一个表达式为假,则不会执行第二个表达式。(这被称为短路运算)
| 表达式1 && 表达式2 | 结果 | |
| 真 | 真 | 真 |
| 假 | 真 | 假 |
| 假 | 假 | 假 |
【2】||
(1)相当于“或”,又一个真,则结果为真。
(2)若第一个表达式为真,则不会执行第二个表达式。(这被称为短路运算)
【3】!
6.位运算符
位运算符不存在短路运算。
【1】按位与&:对应位有0,此位就为0。
【2】按位或|:对应位有1,此位就为1。
【3】按位异或^:只要对应位不一样,此位就是1。
【4】按位取反~
7.移位运算符(了解即可)
【1】左移<<
二进制,向左位移n的位,向右补0。
则相当于对该数字对应的十进制乘2的n次方。
【2】右移>>
二进制,向右位移n的位,向左补符号位(符号位为1补1,为0补0)。
则相当于对该数字对应的十进制除2的n次方。
【3】无符号右移>>>
二进制,向右位移n的位,向左补0。
8.条件运算符
布尔表达式1 ? 表达式2 : 表达式3
JAVA中唯一一个三目运算符(同C)
布尔表达式1为真,则返回表达式2。布尔表达式1为假,则返回表达式3。
九、逻辑控制
1.顺序执行
可按C理解,一行一行执行
2.选择执行
【1】if
JAVA中的if与C不同,它使用布尔表达式,如if(1)为错。(其他与C一致)
if(布尔表达式){
//语句
}else{
//语句
}
【2】switch
与C不同,JAVA除了float,double,long,boolean不能作为参数外,其他都可以。(其他与C有差别,但用法基本一致)
switch(表达式){
case 常量值1:{
语句1;
break;
}
case 常量值2:{
语句2;
break;
}
不写break,会产生代码穿透,即继续执行下面的case分支,直到遇到break或switch语句结束。
3.循环执行
基本与C一致,但JAVA会使用布尔表达式。
break与continue与C一致。
break:跳出此次循环,终止循环。
continue:跳出此次循环,进入下次循环。
【1】while
while(布尔表达式){
//语句
}
【2】for
for(表达式1;布尔表达式;表达式3){
循环体;
}
快速打出:
fori +“回车”,快速写出for循环,for(int i = 0;i< ;i++)
10.fori +“回车”,快速写出for循环,for(int i = 0;i < 10;i++)
【3】do while
do{
语句;
}while(判断条件);
十、方法
1.定义
方法可理解为C语言中的函数
【1】格式
修饰符 返回值 方法名 (形式参数列表){
方法体
return 返回值;(void无返回值)
}
public static int add(int x,int y){
return x+y;
}
【2】注意事项
(1)修饰符:可使用public static固定搭配
(2)返回值类型:返回值类型与返回实体类型一致,void不用写。(同C)
(3)方法名:采用小驼峰命名
(4)参数列表:
(5)Java中, 方法必须写在类中。
(6)Java中,方法不能嵌套定义。(即不能直接在方法内部定义另一个方法)
(7)Java中,方法声明(即方法的完整定义)不需要一定放在主函数(main方法)之前。
【3】实参和形参的关系
Java中,形参的改变不会影响实参的值,拿不到栈上的局部变量的地址的。
注:Java是没有指针的。
2.方法重载(overload)
【1】方法重载:同一个方法名,参数列表必须要不同(个数,类型,顺序),多个不同的方法,与返回值无关。(与C++类似)
【2】签名:在Java中,方法重载的签名由方法名和参数列表(参数类型、个数、顺序)共同决定,与返回值无关。所以才可以做到一个名字,不同方法。
【3】方法重载(overload)与方法重写(override)不同。
十一、递归
在Java中,如果递归调用没有结束条件,会导致栈内存溢出,并抛出java.lang.StackOverflowError错误。
十二、数组
数组定义与C相似。
1.一维数组
【1】定义
例如: int[ ] array={1,2,3,4};或 int[ ] array2 = new int[ ]{1,2,3,4,5,6};(二者无差别)
int[ ] array3 = new int[10]; (默认初始化值为每个元素都是0,Boolean类型默认为false)
错误写法:
(1) int[ ] array4 = new int[10] {……};(int[ ] array3 = new int[10];即等号后面的[ ]里有值,它后面是不能加大括号的)
(2) int[ ] array5;
array5 = {1,2,3,4,5};
【2】两种遍历一维数组的方法
int[] array = {1, 2, 3, 4, 5, 6};
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " "); // 通过索引访问元素
}
System.out.println("\n=====");
for (int x : array) {
System.out.print(x + " "); // 直接获取元素值
}
System.out.println("\n=====");
2.JAVA中的数组方法
包java.util.Arrays;含有多个常用方法
| 场景 | 推荐方法 | 示例 |
|---|---|---|
| 输出数组内容 | Arrays.toString() | System.out.println(Arrays.toString(arr)) |
| 快速排序 | Arrays.sort() | Arrays.sort(arr, Comparator.reverseOrder()) |
| 高效查找(已排序) | Arrays.binarySearch() | int idx = Arrays.binarySearch(arr, key) |
| 复制部分数组 | Arrays.copyOfRange() | int[] copy = Arrays.copyOfRange(arr, 1, 4) |
| 初始化默认值 | Arrays.fill() | Arrays.fill(arr, 0) |
3.二维数组
二维数组是特殊的一维数组。
【1】定义
int [ ] [ ] array = {{1,2,3},{4,5,6}};
int [ ] [ ] array = new [ ] [ ] {{1,2,3},{4,5,6}};
int [ ] [ ] array = new [2] [3];
【2】行数列数的表示
int[][] array={{1,2,3},{3,4,5}};
System.out.println(array.length);//行数
System.out.println(array[0].length);//列数
【3】两种二维数组的遍历方法
int array[][]={{1,2,3},{4,5,6}};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j <array[i].length ; j++) {
System.out.println(array[i][j]+" ");
}
System.out.println();
}
System.out.println("=======");
for (int [] tmpArray :array) {
for(int x:tmpArray){
System.out.println(x+" ");
}
System.out.println();
}
System.out.println("=======");

871

被折叠的 条评论
为什么被折叠?



