Java知识复习(基础知识)

学习Java一个多月了,对之前的内容做一下复习。
以下内容参考了《Java编程思想 第四版》 和《疯狂Java 第二版》 的内容。

1.用引用操纵对象
  • 一切都被视为对象,但操纵的标识符实际上是对象的一个“”引用“”(reference)。如 String s; 这里所创建的只是引用,并不是对象。
2.必须由你创建所有对象
  • 一旦创建了一个引用,就希望他能与一个新的对象相关联。new关键字的意思是“”给我一个新对象“”。
  • String s = new String("asdf");
3.基本数据类型
基本类型大小默认值包装器类型
booleanfalseBoolean
char16-bit‘\u0000’Character
byte8 bits(byte)0Byte
short16 bits(short)0Short
int32 bits0Integer
long64 bits0LLong
float32 bits0.0FFloat
double64 bits0.0DDouble
4.引用数据类型
  • 类,数组,接口 默认值为:null
5.作用域
  • 作用域决定了在其内定义的变量名的可见性和生命周期,作用域由花括号的位置决定。如:
{
    int x = 10;
    //x可见
    {
        int y =5;
        //x , y 都可见 
    }
    //x 可见  ,  y不可见
}
6.标识符和关键字

分号 ;
分号作为语句的分隔。每个Java语句必须使用分号作为结尾。
花括号 {}
花括号的作用就是定义一个代码块。
方括号 []
方括号的主要作用是用于访问数组元素,方括号通常紧跟数组变量名,而方括号里指定希望访问的数组元素的索引。
圆括号()
定义方法时必须使用圆括号来包含所有的形参声明,调用方法时也必须使用圆括号来传入实参值。
圆括号还可以作为强制类型转换的运算符。
圆括号可以将表达式某个部分括成一个整体,保证这个部分优先计算。
空格
Java语言使用空格分隔一条语句的不同部分。
圆点
通常用作类/对象和它的成员之间的分隔符,表明调用某个类或某个实例的指定成员。

标识符规则

  • 标识符可以由字母、数字、下划线、和美元符($)组成,其中数字不能打头。
  • 标识符不能是Java关键字和保留字,但可以包含关键字和保留字。
  • 标识符不能包含空格。
  • 标识符只能包含美元符,不能包含@#等其他特殊字符。

Java关键字

  • Java语言中一些具有特殊用途的单词被称为关键字,所有的关键字都是小写的。
123456
abstractassertbooleanbreakbytecase
catchcharclasscontinuedefaultdo
doubleelseenumextendsfinalfinally
floatforifimplementsimportint
interfaceinstanceoflongnativenewpackage
privateprotectedpublicreturnshortstatic
strictfpsuperswitchsynchronizedthisthrow
throwstransienttryvoidvolatilewhile
7.运算符

算术运算符

  • Java支持所有的基本算术运算符:
  • +:加法运算符(+还可以用作字符串的连接运算符)
        double a = 6.3;
        double b = 2.1;
        double c = a + b;//c的值为 8.4
  • -:减法运算符
        double a = 6.3;
        double b = 2.1;
        double c = a - b;// c的值为 4.2
  • *:乘法运算符
        double a = 6.3;
        double b = 2.1;
        double c = a * b;// c的值为 13.23
  • /:除法运算符,两个操作数都是整型,则除数不可以是0;有一个是浮点数或者两个都是浮点数,则除数可以是0或0.0 , 结果为正无穷或负无穷。
        double a = 6.3;
        double b = 1.2;
        double c = a / b;// c的值为 5.25

        int x = 8;
        int y = 3;
        int k = x / y;// k 的值为2
  • &:求余运算符
        double a = 6.3;
        double b = 2.0;
        double c = a % b;// c的值为 0.3

        int x = 8;
        int y = 3;
        int k = x % y;// k 的值为2
  • ++、–:自加、自减;前缀,先执行运算,再生成值。后缀,先生成值,再执行运算。
        int i = 1;
        System.out.println("i=" + i);//i=1
        System.out.println("++i = " + ++i);//++i = 2
        System.out.println("i++ =" + i++);//i++ =2
        System.out.println(" i =" + i);// i =3
        System.out.println("--i =" + --i);//--i =2
        System.out.println("i-- =" + i--);//i-- =2
        System.out.println("i = " + i);//i = 1

关系操作符

  • >,<,<=,>=,==,!=;关系操作符生成的是一个boolean结果,他们计算的是操作数的值之间的关系。(== !=比较的是对象的引用)

逻辑运算符

  • &&:与,前后两个操作数必须都是true才返回true,否则返回false;
  • &:不短路与,作用与&&相同,但不会短路;
  • ||:或,只要两个操作数有一个为true,则返回true,否则返回false;
  • |:不短路或,与||作用相同,但不会短路;
  • !:非,操作数为true返回false,操作数为false返回true;
  • ^:异或,两个操作数不同时返回true,相同时返回false;

三元操作符

  • 如果逻辑表达式返回true,则返回前一个表达式的值,否则返回后一个表达式的值:
        String string = 5 > i ? "5大于i" : "5不大于i";
        System.out.println(string);
  • 大部分时候三元运算符为 if else 的精简写法:
        String str = "";
        if (5 > i) {
            str = "5大于i";
        } else {
            str = "5不大于i";
        }
        System.out.println(str);
8.流程控制

8.1分支结构

  • if语句与switch语句,一般switch用于等值判断,多重if用于区间判断;switch结构必须使用break才能跳出,多重if只要满足某个条件执行完相应的代码后会自动跳出。

if条件语句

  • if语句使用布尔表达式或布尔值作为分支条件来进行分支控制,if语句有三种方式:
        int num=new Random().nextInt(10);
        if(num>5){
            System.out.println("num>5");
        }
        System.out.println("...");
        int num=new Random().nextInt(10);
        if(num>5){
            System.out.println("num>5");
        }else{
            System.out.println("num<=5");
        }
        int num = new Random().nextInt(10);
        if (num > 5) {
            System.out.println("num>5");
        } else if (num > 3) {
            System.out.println("num>3&&num<=5");
        } else if (num > 0) {
            System.out.println("num>0&&num<=3");
        } else {
            System.out.println("num==0");
        }

switch分支语句

  • switch语句后面的控制表达式的数据类型只能是byte,short,char,int四个整数类型和枚举类型,Java1.7之后允许String类型。
        int num2 = new Random().nextInt(3);
        switch (num2) {
        case 0:
            System.out.println("num2=0");
            break;
        case 1:
            System.out.println("num2=1");
            break;
        case 2:
            System.out.println("num2=2");
            break;
        default:
            System.out.println("...");
            break;
        }

8.2循环结构

  • 循环体如果只有一条语句,可以省略花括号;

while循环

  • while循环先判断再执行循环,当循环条件不满足时,循环一次都不执行。
        int count=0;
        while(count<5){
            System.out.println(count);
            count++;
        }
        System.out.println("循环结束");
  • 死循环情况
        int count=0;
        //死循环
        while(count<5){
            System.out.println(count);
            count--;
        }
        System.out.println("循环结束");

do while 循环

  • 先执行,再判断。安全性不高,当循环条件不成立时,循环至少执行一次。
        int count2 = 0;
        do {
            System.out.println(count2);
            count2++;
        } while (count2 < 5);
        System.out.println("循环结束");

for循环

  • 先判断,在执行。
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
        System.out.println("循环结束");
  • for循环允许同时指定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式。
        for (int a = 0, b = 0, c = 0; a < 4 && b < 4 && c < 7; a++) {
            System.out.println(a++);
            System.out.println(b++);
        }
  • for循环还可以把初始化条件定义在循环体之外,把循环迭代语句放在循环体内,不过这样就非常类似while循环。
        int count = 0;
        for (; count < 5;) {
            System.out.println(count);
            count++;
        }
        System.out.println("循环结束");

foreach循环

  • foreach循环操作数组和集合时更加方便
        int[] is = new int[5];
        for (int i = 0; i < 5; i++) {
            is[i] = new Random().nextInt(10);
        }
        // foreach循环
        for (int i : is) {
            System.out.println(i);
        }

循环嵌套

  • 循环嵌套既可以是for循环嵌套while循环,也可以是while循环嵌套do while循环等等…各种类型的循环都可以作为外循环,也可以作为内循环。
        // 外层循环
        for (int i = 0; i < 5; i++) {
            // 内层循环
            for (int j = 0; j < 5; j++) {
                System.out.println("i=" + i + ",,,j=" + j);
            }
        }

使用break结束循环

  • break用于完全结束一个循环,跳出循环体;
        /**
         * output: i=0 i=1 i=2 i=3 i=4 i=5
         * 
         */
        for (int i = 0; i < 10; i++) {
            System.out.println("i=" + i);
            if (i == 5) {
                break;
            }
        }

使用continue结束本次循环

  • continue只是终止本次循环,接着开始下一次循环。
        /**
         * output: i=0 i=1 i=2 i=4
         */
        for (int i = 0; i < 5; i++) {
            if (i == 3) {
                continue;
            }
            System.out.println("i=" + i);
        }

使用return结束方法

  • return的功能是结束一个方法。
        /**
         * output:i=0 i=1 i=2
         */
        for (int i = 0; i < 5; i++) {
            if (i == 3) {
                return;
            }
            System.out.println("i=" + i);
        }
9.Java的注释
  • 单行注释://后面的都是注释内容
  • 多行注释:/* 中间的都是注释内容/
  • 文档注释:/** 中间的都是注释内容/ 生成Java api 文档
10.类型转换
  • 自动类型转换:小–>大
    • 多个变量做算术运算时,最终表达式的值的类型会和这几个变量类型最大的一致。
    • byte–>short–>int–>long–>float–>double
  • 强制类型转换:大–>小
        double b=2.0;
        int a=(int)b;
11.数组
  • 理解数组:数组也是一种类型,数组是引用类型。
  • Java数组要求所有的数组元素具有相同的数据类型,即一个数组里只能存储一种数据类型的数据。
  • Java数组既可以存储基本类型的数据,也可以存储引用类型的数据。

定义数组

        type [] arrayName;
        type arrayName[];
  • 使用第一种具有更好的语意,具有更好的可读性。

数组的初始化

  • 静态初始化
        int[] is;
        // 使用静态初始化,初始化数组只指定数组元素的初始值,不指定数组长度
        is = new int[] { 1, 2, 4, 5, 7, 56 };
        Object[] obj1;
        // 使用静态初始化,初始化数组的数组元素类型是定义数组时数组元素的子类
        obj1 = new String[] { "as", "ada" };
        // 数组的定义和初始化同时完成
        int[] a = new int[] { 1, 4, 6, 7 };
        // 简化的静态初始化写法
        int[] b = { 3, 4, 5, 6, 6 };
  • 动态初始化
        // 动态初始化数组长度
        int[] nums = new int[10];
        // 给每个数组元素分配初始值
        for (int i = 0; i < nums.length; i++) {
            nums[i] = i;
        }
  • 注意:不要同时使用静态初始化和动态初始化,就是不要在数组初始化时,既指定数组的长度,也给每个数组元素分配初始值。
  • 数组引用变量只是一个引用,这个引用变量可以指向任何有效的内存,只有当该引用指向有效内存后,才可以通过该数组变量来访问数组元素。

操作数组的工具类

  • Arrays类 , 具体方法参考api;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值