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;
}

变量使用注意事项:

  1. long类型需要在后面加上L或者l
  2. float类型需要在后面加上f(以上两点是因为整数类型默认int,浮点类型默认double)
  3. 定义过的变量不能再重新定义
  4. 变量未赋值不能使用

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

方法:将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集,分方法定义和方法调用

方法的注意事项:

  1. 方法不能嵌套定义(Python是可以嵌套定义的)
  2. 类可以有内部类
  3. 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的方法重载,是方法名相同而参数不同

posted on 2021-12-09 09:22  lpzju  阅读(60)  评论(0编辑  收藏  举报

导航