2021-10-15  2021-10-15    7032 字   15 分钟

Java基础语法

关键字和标识符

  • 关键字:java赋予了特殊含义的单词。

    例如:

    class类public公开的void无返回值

  • 关键字特点:

    一般都是小写。

  • 保留字:java暂时没用,但是不保证后面不用

    goto const

  • 标识符:程序员为类、方法、变量等成员起的字符序列,用于区分不同的成员的,起标识作用的符号

  • 标识符起名规则:

    1. 字母 数字 _ $ 组成,并且数字不能开头

    2. 支持中文,区分大小写。但是不建议用中文,也不建议通过大小写区分。

    3. 见名之意

    4. 驼峰原则

      大驼峰:从每个单词首字母大写.给类起名.例如:AxxBxx

      小驼峰:从第二个单词开始首字母大写.给变量、方法.例如:axxBxx

    5. 不能用关键字。

    6. 不能用java提供的类名。

    7. String

注释

  1. 注释作用:解释说明代码的.

  2. 分类:

    1. 单行注释:对一行有效 //
    2. 多行注释:对多行有效但是不能嵌套使用/* */由于不能嵌套这个地方中间用了一个空格。
    3. 文档注释:/** */由于不能嵌套,这个地方中间用了一个空格。
  3. 注释好处:

    1. 解释说明
    2. 排错
    3. 梳理思路
  • 代码:

    /**
     1.注释作用:解释说明代码的.
     2.分类:
        1>单行注释:对一行有效//
        2>多行注释:对多行有效但是不能嵌套使用/*  */由于不能嵌套这个地方中间用了一个空格
        3>文档注释:/** */由于不能嵌套这个地方中间用了一个空格
     3.注释好处
        解释说明
        排错
        梳理思路
    */
    

注释快捷键

快捷键:

注释:

  1. 单行注释 // ctrl+ /
  2. 多行注释 ctrl+shift +/
  3. 文档注释

权限修饰符

权限修饰符

  • 四种权限:
  1. public:公开的,在整个项目中都可以访问。
  2. protected:受保护的,当前包和其它包的子类。
  3. default/friendly 这种就是省略不 写,表示该种,没有权限修饰符的 专门词。 默认的 本包可以访问
  4. private 私有的 本类可以访问。

变量 、常量和数据类型

常量:

  • 概念:内存中开辟的一块存储区域,该区域存储的值不能发生改变的,称为常量.

    例如:1 12.5 长虹 true

  • 常量的分类:

    字面值常量:例如:1 12.5 长虹 true

  • 整数常量 浮点数常量 字符常量 布尔常量

    • 符号常量: 例如: a b

变量:

  • 概念:内存中开辟的一块存储区域,该区域存储的值可以改变,称为变量。

Java 基本数据类型:

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。

Java 的两大数据类型:

  • 内置数据类型
  • 引用数据类型

基本数据类型(简单数据类型):

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

整数类型:
byte:

byte 字节型 1个字节

byte 数据类型是8位、有符号的,以二进制补码表示的整数;

最小值是 -128(-2^7)

最大值是 127(2^7-1)

默认值是 0

byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

例子:byte a = 100,byte b = -50。

short:

short 短整型 2个字节

short 数据类型是 16 位、有符号的以二进制补码表示的整数

最小值是 -32768(-2^15)

最大值是 32767(2^15 - 1)

Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;

默认值是 0

例子:short s = 1000,short r = -20000。

int:

int 整型 4个字节

int 数据类型是32位、有符号的以二进制补码表示的整数;

最小值是 -2,147,483,648(-2^31)

最大值是 2,147,483,647(2^31 - 1)

一般地整型变量默认为 int 类型;

默认值是 0

例子:int a = 100000, int b = -200000。

long:

long 长整型 8个字节

long 数据类型是 64 位、有符号的以二进制补码表示的整数;

最小值是 -9,223,372,036,854,775,808(-2^63)

最大值是 9,223,372,036,854,775,807(2^63 -1)

这种类型主要使用在需要比较大整数的系统上;

默认值是 0L

例子: long a = 100000L,Long b = -200000L。 “L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

代码
class 整数类型 {
    public static void main(String[] args) {
        //声明一个byte类型的变量,存储数据100
        /*byte b = 100; 
        System.out.println(b);*/
        //声明一个long类型的变量,存储数据1234567890123456 
        //注意: 默认没有指定数据类型时,为int类型,那么会存在溢出问题,需要加l或L表示是 long类型。
        long l = 1234567890123456l; 
        System.out.println(l); 
    }
}
浮点数类型 :
float:

float 单精度浮点型 4个字节

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;

float 在储存大型浮点数组的时候可节省内存空间;

默认值是 0.0f

浮点数不能用来表示精确的值,如货币;

例子:float f1 = 234.5f。

double:

double 双精度浮点型 8 个字节

double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;

浮点数的默认类型为 double 类型;

double类型同样不能表示精确的值,如货币;

默认值是 0.0d

默认没有指定数据类型时,double为默认类型。

浮点型在使用的时候,都会有精度损失问题。是一个近似值。在银行等要求精度高的项目中, 使用BigDecimal类来计算。

代码
import java.math.BigDecimal; 
class 浮点数类型 {
    public static void main(String[] args) {
        //声明一个double类型的变量,并且赋值为12.5 
        double d = 12.51; 
        System.out.println(d); 
        BigDecimal bg = new BigDecimal(d);
        System.out.println(bg); 
        //声明一个float类型的变量,并且赋值为12.51 
        //注意:为float类型数据赋值时,必须指定为float类型,可以通过加f或F表示
        float f = 12.51f;
        BigDecimal bg1 = new BigDecimal(f); 
        System.out.println(bg1); 
    }
}
字符类型:
  • 字符类型:char 2个字节 0-65535

    • ① 常见写法:

      • 格式:

        ‘‘引起来的单个字符

        例如:‘a’

    • ② 数字

    • ③ unicode码的形式:

      • 格式:’\u0000’
    • ④ (***)转义字符:

      • 格式:

        ‘\t’制表符 表示8个位置的空格

        ‘\r’回车

        ‘\n’换行

        在window系统下 \r\n连用

  • 代码

    class 字符 {
        public static void main(String[] args) {
            // ① 常见写法: 
            //声明一个变量 赋值为'a' 
            /*char m = '我'; 
            System.out.println(m);*/ 
    
            // ② 数字 
            //声明一个变量,赋值为97 
            /*char m1 = 97; 
            // m1 = m1 + 3; 
            System.out.println(m1);*/
    
            //③ unicode码的形式: 
            /*char m2 = '\u4e50'; 
            System.out.println(m2);*/
    
            /*④ 转义字符:
            格式:
            	'\t'制表符 表示8个位置的空格
                '\r'回车 '\n'换行
             */
            /*System.out.print("aaa"); 
            System.out.print('\t');
            System.out.println("bbb");*/ 
            System.out.println("\"");
        }
    }
    
布尔类型:

boolean:

  • boolean数据类型表示一位的信息;

  • 只有两个取值:true 和 false;

  • 这种类型只作为一种标志来记录 true/false 情况;

  • 默认值是 false

  • 例子:boolean one = true。

  • boolean 表示 值只有true或false 没有其他的值。

  • 代码

class 布尔类型 {
    public static void main(String[] args) { 
        //声明一个布尔类型的变量 
        boolean flag = true ; 
        boolean flag1 = false; 
    } 
}

引用数据类型(复杂数据类型):

数组

类: String (不是基本数据类型)

接口:

字节:

bit :比特。计算机中存储的都是0或者1 ,一个0或者1表示一位,称为比特。

byte:8个0或者1表示一个字节。用B表示。

1KB = 1024 B

K M G T

变量和常量的声明

变量格式:

​ 数据类型 变量的名称(标识符)

注意:

​ 不能多次声明,但是可以多次赋值,对于变量来说。

常量格式:

​ final 数据类型 常量的名称

注意:

​ 常量的名称 往往都大写

变量和常量的赋值

变量的名称 = 数据值

注意:

​ = 在java上有个专业术语 称为赋值符号,该符号将右侧的数据值赋值给左侧。

声明与赋值的简写形式

数据类型 变量的名称 = 数据值

final 数据类型 常量的名称 = 数据值

代码

/**
1.变量的声明和赋值:
① 声明: 数据类型 变量名称 
② 赋值: 变量名称 = 数据值 
*/
class 变量 {
    public static void main(String[] args) {
        //声明一个int类型的变量,并且存储数据为15 
        //常量声明需要加final,变量不需要 
        /*final*/ int a ;
        //赋值 a = 15 ; 
        System.out.println(a); 
        a = 20; System.out.println(a); 
        //声明一个常量
        final int B ; 
    } 
}

变量的作用域

变量的作用域

1.变量的作用域:

  • 变量的使用范围.

2.常见作用域:(位置)

  • 1> 全局变量: 类中方法外

    • 作用域:整个类中,类中所有的方法都可以使用该变量
  • 2> 局部变量: 方法中

    • 作用域: 方法中,出了该方法,就不能被使用。

3.全局变量与局部变量区别:

  • 1> 局部变量要先声明赋值然后再使用。

    • 全局变量一旦声明后,就有默认值。
  • 2> 当全局变量与局部变量重名时,就近原则,局部优先。

4.全局变量的默认值.

  • 1> (***)基本数据类型:

    • 整数类型: byte short int long 默认值 0
    • 浮点数类型: float double 默认值0.0
    • 布尔类型: boolean 默认值false
    • 字符类型: char 默认值 ‘\u0000’
  • 2> (***)引用数据类型:

    • String 默认值:null

代码

class 变量的作用域 { 
    static int b = 20;//全局变量 
    static int c ; 
    static byte b1; 
    static short b2; 
    static double d; 
    static char c1; 
    static boolean b3; 
    static String s; 
    public static void main(String[] args) {
        //声明一个int类型的变量 
        int a = 10; //局部变量 
        // 1> 局部变量要先声明赋值然后再使用。 
        int m = 5;
        //System.out.println(m);
        /*System.out.println("c="+c);
        System.out.println("b1="+b1);
        System.out.println("b2="+b2);
        System.out.println("d="+d);
        System.out.println("c1="+c1);
        System.out.println("b3="+b3);
        System.out.println("s="+s);*/ 
        //重名问题 
        int b = 30; 
        System.out.println(b); 
    }
    public static void add() {
        System.out.println(c);
    }
}

数据类型转换

数据类型转换

1.数据的运算 25 + 13

2.操作数据,数据的运算原则:

​ 同种数据类型进行运算,如果数据类型不同,要转换成相同数据类型才能运算。

​ 并且运算结果也是同种数据类型。

3.数据类型转换分类:

​ 1》自动类型提升:从小的空间转换成大的空间。

​ byte short char -> int-> long -> float -> double

​ 注意:

​ byte short char但凡运算,都会转成int类型。

​ 2》强制类型转换: 从大的空间转换成小的空间。

​ 格式:

​ (要转换成的数据类型) 要转换的变量/数据

​ 注意:

​ 强制类型转换可能会发生精度损失问题

代码

class 数据类型转换 { 
    public static void main(String[] args) { 
        //1》自动类型提升
        /*System.out.println( 25 + 13 ); //25 int 13 int ==> int
        System.out.println( 25 + 13.0 );//25 int 13 double ==> 25 double 13 double ==》double 
        System.out.println( 25 / 13 );// 25 int 13 int ==> int
        System.out.println( 25/13.0 );*///25 int 13 double ==> 25 double 13 double ==》double 
        //2》自动类型提升需要注意的事项,byte short char 都会自动转int类型,才运算。
        byte a = 127;
        byte b = 1; 
        /*byte c = a + b ;*/ 
        //3》 强制类型转换 
        //将上述的数据 存储到byte类型的c中 
        byte c = (byte)(a + b); 
        //System.out.println(c); 
        char c1 = 97 ; 
        c1 = (char)(c1 + 3); 
        System.out.println(c1);
    } 
}

算术运算符

算术运算符

1.算术运算符:

+ - * / ``%

加 减 乘 除 取余/模

2.++ /--

自增 / 自减

在变量原有基础上加1 然后赋值给变量.

格式:

a++:变量在前 ,先取变量的值,然后自身加1

++a:变量在后,先自身加1,然后再去变量的值

3.加号的用法:

① 加法:

② 正号(正数):+5 -5

③ 表示字符串的拼接:

但凡有一侧有字符串,表示字符串的拼接,如果两侧都是数字,表示加法运算

代码:

class 算术运算符 { 
    public static void main(String[] args) {
        /*System.out.println( 5 % 2 );
        System.out.println( 5 / 2 );*/ 
        //自增 
        int a = 5;
        //a++ ; 
        //++a;
        //int b = a++; 
        //int b = ++a; 
        //int b = (++a)+(a++)+(++a); 
            
        int b = (a--) + (++a) + (--a)+ (a++);
        /*System.out.println(a);
        System.out.println(b);*/ 
        
        //③ 表示字符串的拼接: 
        String s = "abc"; 
        System.out.println( 123 + 45 + s);
    } 
}

赋值运算符

赋值运算符

用来给变量赋值

1.赋值运算符 :

基本赋值运算符: =

扩展赋值运算符: += 、 -= 、 *= 、 /= 、 %=

2.作用:

① 简化书写。

② 自动类型转换。

注意:

可能会有精度损失问题。

代码

class 赋值运算符 {
    public static void main(String[] args) {
        int a = 5; 
        int b = 7 ; 
        b = b + a; 
        //简写 
        b += a;// b = b+a 
        
        byte m = 10; 
        byte k = 15; 
        //笔试简单题:以下两种方式,哪种可以编译成功。第一种可以编译成功,第二种不行, 
        //不行的原因在于,对于数据类型运算来说,byte类型的数据需要转换成int才能运算, 
        //不能放置在byte类型的空间里,如果要放,必须要强制类型转换,而第一种,可以自动类 型转换。 
        //k -= m; 
        k = k-m ; 
    } 
}

比较运算符

比较运算符

1.比较运算符:

> < >= <=

== 等于

!=不等于

运算结果:都是布尔类型的值 true/false

注意:

a < b < c

在java中不允许,java中比较运算只有一个运算符。

如果非要用这种形式,可以通过逻辑运算符进行连接。

代码

class 比较运算符 {
    public static void main(String[] args) { 
        System.out.println( 2 > 3);
        System.out.println(2 == 5 );
        System.out.println(3 != 5); 
    } 
}

逻辑运算符

逻辑运算符

\1. 逻辑运算符

& && | || ^ !

与 逻辑与 或 逻辑或 异或 非

\2. & 与:集合中的交集

​ true & true –》 true

​ true & false –》 false

​ false & true –》 false

​ false & false –》 false

3.&&与&的区别:

​ && 称为短路与,一般用于逻辑运算。当第一个表达式结果为false的情况下,第二个表达式不再执行。

​ & 一般用于位运算,不参与逻辑运算。

4.| 或: 集合中的并集

​ true | true –》 true

​ true | false –》 true

​ false | true –》 true

​ false | false –》 false

\5. (***)||与|的区别

​ || 称为短路或,一般用于逻辑运算。当第一个表达式结果为true的情况下,第二个表达式不再执行。

​ | 一般用于位运算,不参与逻辑运算。

6.^ 异或 :相同为false 相异为true

7.! 非 ,取反

代码

class 逻辑运算符 {
    public static void main(String[] args) {
        //a<b<c b大于2 小于10 
        int b = 5; 
        /*System.out.println(2 < b || (++b) < 10); 
        System.out.println(b);*/ 
        //^ 异或 :相同为false 相异为true
        //System.out.println(true ^ false ); 
        // 7.! 非
        System.out.println(!false);
    } 
}

三元运算符

三元运算符

1.三元运算符 : 三目运算符

格式:

​ 结果为true或false

表达式 ? 表达式1(true) : 表达式2 (false)

注意:

​ 其中 表达式1 和2 ,数据类型其实可以不一致,但是建议一致。

代码

class 三元运算符 {
    public static void main(String[] args) { 
        int a = 5; 
        System.out.println(a>7 ? 1 : 2);
        //String b = a>7 ? "1" :2;
        System.out.println(a>7 ? "1" :2);
    } 
}

进制

进制

  • 常见进制

    ​ ① 二进制:组成0 1 ,前缀0b

    ​ ② 八进制:组成0-7, 前缀0

    ③ 十进制:组成 0-9

    ④ 十六进制:组成0-9 abcdef 10-15用字符来表示,前缀0x

  • 计算机的进制:二进制

    ① 数的进制:逢?进一

    二进制: 0 1

    八进制: 0-7

    十进制: 0-9

    十六进制: 0-9 a-f a 10 b 11 c 12 d 13 e 14 f 15

    ② 写法:

    15 默认为十进制。

    二进制前缀 0b

    八进制 0

    十六进制 0x

    ③ 进制的转换:

  • 十进制与二进制之间的转换:

将十进制转换成二进制: 除商取余倒序输出

转换成二进制:除以2,直到商为0,将余数倒序输出。

例如:

13

转成二进制:

1101

  • 十进制转其它进制

    除商取余倒序输出,转几进制就除以几,直到商为0,倒序输出余数

  • 将二进制转换成十进制: 位权法

    位权:每一位上代表的基数值

    位权指数制中每一固定位置对应的单位值

例如 :十进制 1025 –》 1 表示千位 位权 10^3 2 表示十位 位权 10^1

二进制 1101 –》

  • 任意进制转换成十进制

    位权法: 系数乘以该进制的位权之和。

  • 二进制与八 、十六进制转换

三个二进制位表示一个八进制位,四个二进制位表示一个十六进制位。

例如:

015

转二进制

00001101

代码:

/**1.常见进制: 
① 二进制:组成0 1 ,前缀0b 
② 八进制:组成0-7, 前缀0 
③ 十进制:组成 0-9
④ 十六进制:组成0-9 abcdef 10-15用字符来表示,前缀0x 
2.进制转换:
① 十进制与二进制转换。 
*/
class 进制 {
    public static void main(String[] args) {
        System.out.println(0b11); 
        System.out.println(23); 
        System.out.println(023); 
        System.out.println(0x23); 
    } 
}

计算机中数据的存储

概述

1.计算机中数据存储都是以二进制的形式进行存储。

(***)2.数据存放以二进制补码的形式进行存放。

3.一个字节为例:

+0 0000 0000

-0 1000 0000

4.计算机中正数 表示时,最高位,表示符号位,如果为0 表示正数。如果为1,表示负数。

5.补码形式:

1》 原码: 符号位 + 该数的绝对值的表示形式

2》 反码: 除了符号位之外,按位取反。

3》 补码: 反码 + 1

6.其中,正数的补码与原码相同,负数的补码等于 反码+1

例如:

一个字节为例:

13

原码: 0000 1101

补码: 0000 1101

-13

原码: 1000 1101

反码: 1111 0010 反码+1

补码: 1111 0011

两个字节:

-13

原码: 1000 0000 0000 1101

反码: 1111 1111 1111 0010

补码: 1111 1111 1111 0011

例如:

一个字节:

25

原码: 0001 1001

补码: 0001 1001

- 25

原码: 1001 1001

反码: 1110 0110

补码: 1110 0111

从计算机中取出二进制的数据

byte a= 127 :0000 0000 0000 0000 0000 0000 0111 1111

byte b =1 :0000 0000 0000 0000 0000 0000 0000 0001

+ ======> 0000 0000 0000 0000 0000 0000 1000 0000

+= ======> 1000 0000 计算机 该数由于最高位为1 表示就是负数

补码:1000 0000

反码:1111 1111 补码-1

原码:1000 0000

例如:

一个字节:

10010011

该数 在计算机中表示补码。

该数由于是一个字节,最高位1,该数表示的负数。反码 –》 原码

反码: 1001 0010

原码: 1110 1101

- 109

二个字节:

该数在计算机中表示正数,补码与原码相同。

总结

计算机数据的存储:

① 将数据存储到计算机:其它进制转二进制。数据存储 以补码形式存放。正数原码与补码相同,负

数以补码形式存储。

正数最高位为0 ,负数最高位为1.

② 从计算机中取出:

根据字节数判断最高位是多少,最高位为0 表示该数是正数,最高位为1 表示该数是负数。

位运算

概述

« » »> ^ & |

«

1.« 左移:按位向左侧移动,左移后,空位全补0

格式:

操作数 « 左移的位数

规律(一般规律,会有特殊情况):

左移多少位,就相当于操作数乘以2的多少次幂

例如:

5 « 1

以一个字节为例:

5的二进制: 0000 0101

0000 1010

**

»

\2. » 右移:又称有符号右移,按位向右侧移动,右移后,空位按最高位补,最高位为1补1 最高位

为0 补0

格式:

操作数 » 右移的位数

规律(正数一般规律,会有特殊情况:)

右移多少位,相当于操作数除以2的多少次幂

例如:

5 » 1

»>

3.»> 右移 :又称无符号右移,按位向右侧移动。 右移后,空位全部补0.

格式:

操作数 »> 右移的位数

4.& | ^

& 按位于

| 按位或

^ 按位异或 : 相同为0 不同为1

~ 取反

代码

/**
1.<< 左移:按位向左侧移动,左移后,空位全补0 
格式:
	操作数 << 左移的位数 
规律(一般规律,会有特殊情况):
	左移多少位,就相当于操作数乘以2的多少次幂
2. >> 右移:又称有符号右移,按位向右侧移动,右移后,空位按最高位补,最高位为1补1 最高位 为0 补0 
	格式:操作数 >> 右移的位数 
规律(正数一般规律,会有特殊情况:) 
	右移多少位,相当于操作数除以2的多少次幂。 
3.>>> 右移 :又称无符号右移,按位向右侧移动。 右移后,空位全部补0. 
	格式:操作数 >>> 右移的位数 
4.& | ^ 
& 按位于 
| 按位或
^ 按位异或 : 相同为0 不同为1 
~ 取反 
*/
class 位运算 {
    public static void main(String[] args) {
        // 1.<< 左移 
        /*System.out.println(5 << 1);
        System.out.println(5 << 2); 
        System.out.println(5 << 3); 
        System.out.println(5 << 4);*/ 
        // 2.>> 右移 
        /*System.out.println(5 >> 1); 
        System.out.println(5 >> 2); 
        System.out.println(5 >> 3); 
        System.out.println( -5 >> 1); 
        System.out.println( -5 >> 2); 
        System.out.println( -5 >> 3);*/ 
        //3.>>> 无符号右移 
        /*System.out.println(-5 >>> 1); 
        System.out.println(-5 >>> 2); 
        System.out.println(-5 >>> 3); 
        System.out.println(-5 >> 1); 
        System.out.println(-5 >> 2); 
        System.out.println(-5 >> 3);*/ 
        // 4.& | ^ 
        /*System.out.println(2 & 3); 
        System.out.println(2 | 3); 
        System.out.println(2 ^ 3);*/ 
        //异或 既可以做位运算也可以做逻辑运算 
        //System.out.println(true ^ false); 
        System.out.println(~2); 
    } 
}

avatar
青山
悟已往之不谏 知来者之可追
一言
今日诗词
站点信息
本站访客数 :
本站总访问量 :