JAVA复习总结 一( 详细,干货!)

  • Post author:
  • Post category:java


首先了解下Java的运行机制

以下面代码为例:

  1. 首先使用javac Hello.java命令,开启Java编译器并进行编译,生成一个.class的字节码文件。
  2. 使用java Hello命令启动Java虚拟机运行程序(Java虚拟机首先将编译好的字节码文件加载到内存,这个过程被称为

    类的加载

    ,它是由

    类加载器

    完成的,然后由

    虚拟机

    (

    JVM

    )针对加载到内存的Java类进行解析执行,然后就可以看到运行结果了)。
class Hello{
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

一些简单的点就不写了(都有哪些数据类型,语法格式之类的),书上随便翻翻都能找到的就不写了哈。



一、关键字

(1)被Java语言赋予特定含义的单词

(2)特点:

全部小写。

(3)注意事项:

goto和const作为保留字存在。

在使用IDE和高级记事本的时候,关键字会有特殊颜色标记



二、命名规则:

  • 组成规则:

    A:英文大小写字母

    B:数字

    C:$和_

  • 注意事项:

    A:不能以数字开头

    B:不能是java中的关键字

    C:区分大小写

  • 常见的命名规则(见名知意)

  1. 包 全部小写

    单级包:小写

    举例:lala,haha

    多级包:小写,并用.隔开

    举例:cn.itcast.lianxi
  2. 类或者接口

    一个单词:首字母大写

    举例:Student,Name

    多个单词:每个单词首字母大写

    举例:HelloWorld,StudentAge
  3. 方法或者变量

    一个单词:首字母小写

    举例:name,age

    多个单词:从第二个单词开始,每个单词首字母大写

    举例:studentAge
  4. 常量

    全部大写

    一个单词:大写

    举例:PI

    多个单词:大写,并用_隔开

    举例:STUDENT_NAME



三、注释

注释分为:

  1. 单行注释 //
  2. 多行注释 /* */
  3. 文档注释 /** */

这里就说一下之前我遇到的一个问题吧



/*
 * public static void main
 * System.out.println();
 */
 // 上下这两种效果是一样的,这一点相信大家肯定通过实验证明了
/*
public static void main
System.out.println();
*/

刚开始我实验发现两个效果一样,我那时也很迷茫不知道为什么好多都采用第一种方法,它不麻烦吗,当时就想会不会还有更深层次的原因。后来看了Java编程思想一书后,才知道根本没有,就是为了好看,

因为在进行编译时/* */之间所有东西都会被忽略,所以并没有什么两样



三、变量


(1)变量的简介

  • 什么是变量:变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。在程序的执行过程中,其值在某个范围内可以发生改变的量。
  • 一个变量与一个类型相关联,并且只能够存储该特定类型的值。
  • 变量的定义格式:
  1. 数据类型 变量名 = 初始化值
  2. 数据类型 变量名;

    变量名 = 初始化值;
  3. 可以使用逗号隔开声明多个同类型变量。例如:int a = 17, b = 30;(不过这样看起来,代码会显得乱一些)


注意

:”=”在这里不是指等于的意思,指的是

赋值

的意思:就是说把右边的值赋给(存放到)左边,至于Java中的等于后面会说。


(2)变量的类型转换


在程序中,当把一种数据类型赋给另一种数据类型是,需要进行数据类型转换。根据转换的方式不同,可分为两种:自动类型转换和强制类型转换。

  1. 自动类型转换(隐式类型转换),指的是两种数据类型在转换过程中不需要

    显式的声明(强制类型转化)

    ,要自动类型转换必须要满足两个条件:第一个条件是两种数据相互兼容,第二个条件是目标类型的取值范围大于原来类型的取值范围。


默认转换

  • 从小到大
  • byte,short,char – int – long – float – double
  • byte,short,char之间不相互转换,直接转成int类型参与运算。

例:

// 数据类型都是整数类型,目标类型的取值范围大于原来类型的取值范围
// 程序将byte类型b自动转为int类型
byte b = 6;
int x = b;

在这里插入图片描述

输出结果是9

  1. 强制类型转换(显式类型转换),指的是两种数据类型不兼容或者目标类型小于原类型时,无法隐式转换,就需要用到显示类型转换(当兼容类型向下强制转换时,会出现精度丢失的情况)。

格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);

int a = 4;
byte b = a;
System.out.println(b);

会报错:可能会损失精度,而在eclipse上面
在这里插入图片描述

用上面方法已经无法转换了,但是可以这样:

     int b = 8;
     // 括号直接声明就可以了,程序正常运行
     byte c =(byte) b;
     System.out.println(c);



四、运算符



算数运算符

  1. +(加法):相加运算符两侧的值,如 A + B。
  2. -(减法):左操作数减去右操作数,如 A – B。
  3. *(乘法):相乘操作符两侧的值,如 A * B。
  4. /(除法):左操作数除以右操作数,如 B / A。
  5. %(取余):左操作数除以右操作数的余数,如 B % A。
  6. ++(自增): 操作数的值增加1,如 B++ 或 ++B 。
  7. –(自减):操作数的值减少1,如 B– 或 –B 。
int x = 1 + 1 // 2
int y = 1 - 1 // 0
int a = 1 * 2 // 2
int b = 4 / 2 // 2
int c = 4 % 3 // 1
int i = 1,j = 2;
i++ // 2
j-- // 1

  • +的用法:
  1. 加法
  2. 正号
  3. 字符串连接符

  • ++和–的用法
  1. 它们的作用是自增1或者自减1
  2. 使用:


    单独使用:


    放在操作数据的前面和后面效果一样。

    a++或者++a效果一样。


参与操作使用:


放在操作数的前面:先自增或者自减,再参与操作

int a = 5;

int b = ++a;

放在操作数的后面:先参与操作,再自增或者自减

int a = 5;

int b = a++;



赋值运算符

  • =,+=,-=,*=,/=,%=等
  1. =:右边赋值给左边
  2. +=:两边相加赋值给左边
  3. -=:左边减右边赋值给左边
  4. *=:两边想乘赋值给左边
  5. /=:左边除右边(上面的都一样,不过为了简便写了两边)赋值给左边
  6. %=:左边对右边取余赋值给左边
  • =叫做赋值运算符,也是最基本的赋值运算符 int x = 5; 把5赋值给int类型的变量x。
  • 扩展赋值运算符的特点 隐含了自动强制转换。(在变量赋值时,当两种类型不兼容或者目标类型取值范围小于原类型时,需要强制进行转换,例如将一个int类型的值赋值给一个byte类型时,就需要强制类型转换,然而在+=,-=,*=,/=,%=这几个运算符中进行赋值时,强制类型会自动转换完成,程序不需要进行任何显式声明)
     int a = 18;
     byte b = 5;
     b += a;
     System.out.println(b);// 输出结果23,这样并不需要任何显式声明


比较运算符

  1. ==,!=,<,>,<=,>=
  2. 无论运算符两端简单还是复杂最终结果是boolean类型。
  3. 注意:千万不要把==写成了=


逻辑运算符

  • &,|,^,!,&&,||
  • 逻辑运算符用于连接boolean类型的式子
  • 结论
  1. &:有false则false
  2. |:有true则true
  3. ^:相同则false,不同则true。(^的特殊用法

    一个数据针对另一个数据位异或两次,该数不变)
  4. !:非true则false,非false则true
  5. &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
  6. ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。


短路现象

:就是一旦能够明确无误的确定整个表达式的值,就不会再计算余下部分了。

这次的内容先到这里,有问题的话欢迎评论区提问。



版权声明:本文为m0_46437589原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。