【化神系列】 JavaSE基础语法

简介: JavaSE基础语法

一、main()方法

public class TestBegin {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
  • 源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个
    类。类的内容必须包含在花括号里面。
  • 类:类中带有一个或多个方法。方法必须在类的内部声明。
  • 方法:在方法的花括号中编写方法应该执行的语句。

✅简述Java中的main()方法

main()方法是Java程序执行的入口,它是一个定义在类中的、公开的、静态的、无返回值的,参数为一个字符串数组的方法,它的参数args与执行参数一一对应。

在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。

二、标识符

  • 合法的标识符

字母、数字以及 下划线和 $ 符号等等。

注意:标识符不能以数字开头,也 不能是关键字,且 严格区分大小写。
  • 一般规范:
类名:每个单词的首字母大写(大驼峰)
方法名:首字母小写,后面每个单词的首字母大写(小驼峰)
变量名:与方法名规则相同

三、常见关键字

具有特殊含义的标识符称为关键字

  • 48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
  • 2个保留字:goto、const。
  • 3个特殊直接量:true、false、null。

四、注释规则

单行注释:// 注释内容 Ctrl+/

多行注释:/ 内容 / Ctrl +Shift+/

文档注释: / 文档注释 */(常见于方法和类描述方法和类的作用) / + Enter

五、数据类型与变量

1 . 常量与变量
  • 常量:固定不变的量

字符串常量、整形常量、浮点数常量、字符常量、布尔常量true和false、空常量null

  • 变量:经常改变的内容

    int a = 10; // 定义整形变量a,a是变量名也称为标识符,该变量中放置的值为10

    字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型

2. 基本数据类型
  • 基本数据类型:四类八种 整型、浮点型、字符型以及布尔型
  • 整型、浮点型、字符型以及布尔型

    image-20220802174455140


  • 整型

    public class TestBegin {
        public static void main(String[] args) {
            /** 整型变量
             * 1. int不论在何种系统下都是4个字节
             * 2.变量在使用之前必须要赋初值,否则编译报错
             * 3. int的包装类型为 Integer
             */
            int a = 10;
            System.out.println(a);
            System.out.println(Integer.MIN_VALUE);
            System.out.println(Integer.MAX_VALUE);
            /**长整型变量
             *1. 长整型变量的初始值后加L或者l,推荐加L
             *2. 长整型  占8个字节: -2^63~2^63-1
             *3. long的包装类型为Long
             */
            long b = 30L;
            System.out.println(b);
            System.out.println(Long.MIN_VALUE);
            System.out.println(Long.MAX_VALUE);
            /**短整型变量
             * 1. short  占2个字节 16bit  -32768 ~ 32767
             * 3. 使用时注意不要超过范围(一般使用比较少)
             * 4. short的包装类型为Short
             */
            short c = 5;
            System.out.println(c);
            System.out.println(Short.MIN_VALUE);
            System.out.println(Short.MAX_VALUE);
            /**字节型变量  
             * 1. byte在任何系统下都占1个字节-128 ~ 127
             * 2. 字节的包装类型为Byte
             */
            byte d = 2;
            System.out.println(b);
            System.out.println(Byte.MIN_VALUE);
            System.out.println(Byte.MAX_VALUE);
        }
    }


  • 浮点型
/**double
 *双精度浮点数 8字节
 *存储方式与整数不同
 */
double d = 5.26;
/**float
  *单精度浮点数  4字节
  *包装类Float
  */
float f =12.5f;
  • 浮点数存在一定量的精度误差,因此浮点数是个近似值,并不是精确值
  • 在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 小数, 需用 double 类型计算.

  • 字符型

    char ch1 ='h';
    System.out.println(ch1);
    char ch2 = 97;
    System.out.println(ch2);
    Java 中char使用 Unicode 编码表示字符. 因此一个字符占用两个字节即16位, 表示的字符种类更多, 包括中文并兼容ASCLL 码
    • 布尔型
    boolean b =true;
    • boolean 类型的变量只有两种取值, true 表示真, false 表示假.
    • Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.

六、类型转换

隐式类型转换(编译器自动进行处理 )

float f = 3.14F;
double d = 5.12;
d = f; // 编译器会将f转换为double,然后进行赋值
f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全
byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失
数据范围小的转为数据范围大的时会自动进行

强制类型转换(经过一定的格式处理 )

int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败

float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败

注意事项:

  1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
  2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是**可能精度丢失
  3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
  4. 强制类型转换不一定能成功,不相干的类型不能互相转换

七、类型提升

/**
*类型提升
*参与运算的数据小于四个字节,进行整型提升,并使用int类型接收
*/
//计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short
//这种低于 4 个字节的类型, 会先提升成 int, 再参与计算
byte x =10;
byte y =20;
int c = a+b;
  • 不同类型的数据混合运算, 范围小的会提升成范围大的.
  • 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算
  • 字符串类型转换
    在有些情况下,需要将字符串和整形数字之间进行转换:
  1. int 转成 String
public static void main(String[] args) {
String s1 = "hello";
String s2 = " world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
  1. String 转成 int

    int num = 10;
    // 方法1
    String str1 = num + "";
    // 方法2
    String str2 = String.valueOf(num);
    String str = "100";
    int num = Integer.parseInt(str)  

八、 常见运算符

逻辑运算符

逻辑与 &&

表达式1 && 表达式2,左右表达式必须是boolean类型的结果。 两个表达式都为真,结果才是真

逻辑或 || 左右表达式至少有一个位真,则结果为真

逻辑非 ! 真变假,假变真

位运算符

按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.

按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0

按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

移位运算符

<<左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
>>右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
 >>>无符号右移: 最右侧位不要了, 最左侧补 0
由于计算机 计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替

image.png

public class Solution {
      public int Add(int num1,int num2) {
             while (num2!=0) {
                int temp = num1^num2;
                num2 = (num1&num2)<<1;
                num1 = temp;
            }
            return num1;
        }
}

383,不使用“+”,“-”,“×”,“÷”实现四则运算 (qq.com)

九、循环与分支

不能用作switch的参数类型有哪些?

  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:
    基本类型:byte、char、short、int,注意不能是long类型
    引用类型:String常量串、枚举类型
  • long、float、double、boolean不能作为 Switch的数据类型

十、输入数据

import java.util.Scanner; // 需要导入 util 包

Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");

String name = sc.nextLine();
System.out.println("请输入你的年龄:");

int age = sc.nextInt();
System.out.println("请输入你的工资:");

float salary = sc.nextFloat();
System.out.println("你的信息如下:");
println 输出的内容自带 \n, print 不带 \n
printf 的格式化输出方式和 C 语言的 printf 是基本一致的

多组输入

while(scan.hasnext(int))
//举例
public class TestCircle {
    /**
     * 输出形状
     * @param args
     */
    public static void main11(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {      //判断下一有无整数输入,多组输入
            int n = scan.nextInt();
            for(int i = 0;i < n;i++) {
                for(int j = 0;j < n;j++) {
                    if(i == j) {
                        System.out.print("*");
                    }else if( i+j+1 == n) {
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }

image-20220808102126304

注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 Windows 上使用 ctrl + z,Linux 上使用 ctrl+d)

猜数字游戏0-100之间

public class TestRandom {
    public static void main(String[] args) {
        Random random = new Random();
        int a =random.nextInt(100);
        Scanner scan  = new Scanner(System.in);
        while (true) {
            System.out.println("请输入你的数字");
            int m = scan.nextInt();
            if(m > a){
                System.out.println("猜大了");
            }else{
                if( m < a){
                    System.out.println("猜小了");
                }
                else {
                    System.out.println("恭喜你,回答正确");
                    break;
                }
            }
        }
    }
}

image-20220808112955839

相关文章
|
5月前
|
Java 程序员 编译器
08. 【Java教程】Java 基础语法
08. 【Java教程】Java 基础语法
31 0
|
6月前
|
安全 Java 程序员
一文让你深入了解JavaSE的知识点(下)
一文让你深入了解JavaSE的知识点(下)
|
6月前
|
Java 编译器 数据安全/隐私保护
一文让你深入了解JavaSE的知识点(上)
一文让你深入了解JavaSE的知识点
|
6月前
|
存储 Java
Java入门&基础语法
Java入门&基础语法
20 0
|
6月前
|
安全 算法 Java
JavaSE 进阶-javase进阶(三)
JavaSE 进阶-javase进阶
58 0
|
6月前
|
安全 Java API
JavaSE 进阶-javase进阶(二)
JavaSE 进阶-javase进阶
50 0
|
6月前
|
存储 人工智能 算法
JavaSE 进阶-javase进阶(一)
JavaSE 进阶-javase进阶
61 0
|
Java 编译器 C语言
JavaSE基本语法~2
JavaSE基本语法~2
|
存储 Java 编译器
JavaSE基本语法~1
JavaSE基本语法~
|
存储 Java 编译器
【JavaSE】基础语法知识汇总
【JavaSE】基础语法知识汇总