Java学习笔记-基础语法
Java实现跨平台原理:jvm(Java虚拟机)
JRE:Java程序运行时环境,包含JVM和运行时所需要的核心类库
JDK:Java程序开发工具包,包含JRE和开发人员使用的工具(javac.exe和java.exe)
JavaSE、JavaEE、JavaME
JavaSE:面向对象、多线程、IO流、javaSwing
JavaEE:serclet、jstl、jsp、spring、mybatis
Java ME 又称为J2ME(Java Platform,Micro Edition),是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。
注释用//或者/**/
Java的变量需要初始化,不像C语言不需要初始化(这里是因为java中的是在main方法中,是局部变量,所以需要赋初始值,如果是在方法外,直接在类中,则可以不需要赋初始值)
public class int_out {
public static void main(String[] args) {
int a;
System.out.println(a);
}
}
java: 可能尚未初始化变量a
#include<stdio.h>
int main(){
int a ;
printf("%d",a);
return 0;
}
变量使用注意事项:
- long类型需要在后面加上L或者l
- float类型需要在后面加上f(以上两点是因为整数类型默认int,浮点类型默认double)
- 定义过的变量不能再重新定义
- 变量未赋值不能使用
Java的强制类型转换也和C差不多,使用趋零截断
这里感受到JetBrains和VSCode的一点小区别:IDEA和PyCharm换行都是Shift+Enter,而VSCode是Ctrl+Enter
public class Conversion {
public static void main(String[] args) {
int a = (int)88.88;
int b = (int)-88.88;
System.out.println(a);
System.out.println(b);
}
}
88
-88
Java的输出与C不同点在于,Java可以直接输出运算结果,而C必须借助%或者其他形式输出
public class mode_demo {
public static void main(String[] args) {
System.out.println(5/4);
System.out.println(5/4.0);
System.out.println(12%2.5);
}
}
1
1.25
2.0
从这里可以看出,如果其中有浮点类型的,则结果自动转换浮点类型
注意一下这里的类型转换,short和char为2字节,float为4字节
字符串的拼接(感觉倒不是特别重要)
public class String_out {
public static void main(String[] args) {
System.out.println(1+99+"hello");
System.out.println("hello"+1+99);
}
}
100hello
hello199
扩展的赋值运算符隐含了强制类型转换
public class qiangzhi {
public static void main(String[] args) {
short i = 1;
i += 1;
// 不能写i=i+1,因为1是int类型,而i为short类型
// 这里i += 1 等价于i = short(i+1)
System.out.println(i);
}
}
但是C语言中,是可以直接这样的
#include<stdio.h>
int main(){
short a = 3;
printf("%d\n",a);
printf("%d\n",sizeof(a));
a += 2;
printf("%d\n",a);
a = a + 3;
printf("%d\n",a);
printf("%d",sizeof(a));
return 0;
}
3
2
5
8
2
逻辑异或:不同为1,相同为0
注意却分逻辑异或、短路异或(其他逻辑和短路同理)
public class logic_xor {
public static void main(String[] args) {
int i = 10;
int j = 20;
System.out.println((i++)>100 && (j++)>100);
System.out.println(i);
System.out.println(j);
}
}
false
11
20
Java的输入,需要先导包,再实例化,再输入
import java.util.Scanner;
public class shuru {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println(x);
}
}
switch中最好每条语句都加上break,以及最后使用default
同时记得case穿透,可以用case穿透来对多条语句进行判断输出
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int week = sc.nextInt();
switch (week){
case 1:
System.out.println(week+":星期一");
break;
case 2:
System.out.println(week+":星期二");
break;
case 3:
System.out.println(week+":星期三");
break;
case 4:
System.out.println(week+":星期四");
break;
case 5:
System.out.println(week+":星期五");
break;
case 6:
System.out.println(week+":星期六");
break;
case 7:
System.out.println(week+":星期日");
break;
default:
System.out.println("你输入的有误");
}
}
}
random函数,先导包
import java.util.Random;
再实例化
Random r = new Random()
再得到随机数
int x = r.nextInt()
Java创建数组时,默认初始值为0,而C则由系统随机指定
#include<stdio.h>
int main(){
int arr[3];
printf("%d\n",arr);
printf("%d\n",arr[0]);
printf("%d\n",arr[1]);
printf("%d\n",arr[2]);
return 0;
}
6422292
4199120
4199120
2637824
public class positive_arr {
public static void main(String[] args) {
int []arr = new int[3];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// System.out.println(arr[3]);
}
}
[I@776ec8df
0
0
0
数组的长度获取,用变量名.length获得
public class static_demo {
public static void main(String[] args) {
int [] arr = new int[]{1,2,3,4,5};
System.out.println(arr[1]);
System.out.println(arr.length);
arr = null;
System.out.println(arr);
}
}
2
5
null
方法:将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集,分方法定义和方法调用
方法的注意事项:
- 方法不能嵌套定义(Python是可以嵌套定义的)
- 类可以有内部类
- void无返回值,可以省略return,也可以单独书写return,但是单独书写时,后面不能加数据(单独return表示不执行后面语句,return+数字表示返回值)
#include<stdio.h>
int main(){
void getMax(int a,int b);
getMax(3,5);
return 0;
}
void getMax(int a,int b){
printf("hello world!");
return 0;
}
"""
test.c: In function 'getMax':
test.c:9:12: warning: 'return' with a value, in function returning void
9 | return 0;
| ^
test.c:7:6: note: declared here
7 | void getMax(int a,int b){
| ^~~~~~
hello world!
"""
方法重载在C和Python中都是没有的,C++好像有?
Java的方法重载,是方法名相同而参数不同