看完就会的Java

第一章 入门

  • Java不依赖于平台,是因为java虚拟机的存在。

  • JVM:JVM是(Java Virtual Machine)Java虚拟机的简称,我们如果想和计算机交流,那JVM就是这两者交流中的介质。

  • JDK和JRE的区别:

    1. JRE(Java Runtime Environment)是Java运行环境的简称。JRE由JVM和Java程序中所需的核心类库组成。JRE=JVM+类库
    2. JDK(Java Development Kit)Java开发工具包的简称。其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE。JDK=JRE+Java开发工具。
    3. 关系:使用JDK开发完成java程序,交给JRE运行
  • Java是纯粹的面向对象的程序设计语言,C++是面向对象和面向过程都支持的程序设计语言,这是因为C语言是C++的子集,而C语言是面向过程的程序设计语言。

  • Java应用程序开发步骤:
    (1)编写源文件。文件扩展名必须是.java。
    (2)编译源文件。使用javac.exe编译。得到字节码文件。
    (3)使用Java SE平台中的Java解释器(java.exe)来解释字节码文件。

  • 一个java文件只能有一个public class

  • 反编译:把编译器得到的字节码文件还原为源文件。C语言生成的是机器码,所以很难在反编译。java的反编译器是:javap.exe。不能反编译出方法内容,只能反编译出方法名。

  • 如果控制台显示“无法加载主类”的问题,应该看看我们的CLASSPATH的配置前面有没有加“.;”,这个点表示当前路径。也可以在控制台设置set classpath=.来解决问题。

  • Java中的数组,它的[]可以放在类型后面,也可以放在形参后面。有一点点小区别。

  • 在控制台使用javac Hello.java来编译源文件,使用java Hello来执行文件。
    (1)javac命令可以将java源文件编译为class字节码文件。
    (2)java命令可以运行字节码文件。

  • 使用文本编辑器写Java代码时,一定要用ANSI码保存文件。

  • javac是JDK提供的编译器。

  • javac为编译器,javap为反编译,javadoc为生成帮助文档。jjava为解释器。

  • Java命名规则是类的首字母大写。方法和变量首字母小写,例:setName。标识符不能以数字打头,可以用_,不能用-。

  • byte short int long 在赋值数字是不区分精度大小,但使用变量赋值时,是区分精度的。

  • byte的范围是:-128~127

  • Java语言使用Unicode标准字符集,最多可以识别65536个字符

  • 低精度的可以隐式的转为高精度。高精度不能隐式的转换,只能强制类型转换。

  • JDK1.5新增了和C语言中printf函数类似的输出数据的方法。

    1. 格式如下:
      System.out.printf(“格式控制部分”,表达式1,表达式2,…表达式n)
    2. 格式控制部分由格式控制符号:%d、%c、%f、%s和普通的字符组成,普通字符原样输出。格式符号用来输出表达式的值。
    3. %d输出int类型数据值;%c输出char型数据;%f输出浮点型数据,小数部分最多保留6位;%s输出字符串数据。
    4. 输出数据时也可以控制数据在命令行的位置,例如:%md输出的int型数据占m列;%m.nf输出的浮点型数据占m列,小数点保留n位。
  • System.out.printf("%20.8f",x);。20为域宽,8为保留小数位数。

  • 输入基本型数据,可以使用Scanner类创建一个对象。

    1. Scanner reader=new Scanner(System.in);
    2. 其中:reader对象调用下列方法,读取用户在命令行输入的各种基本类型数据:nextBoolean()、 nextByte()、 nextShort()、 nextInt() 、 nextLong()、nextFloat()、nextDouble()。
    3. 上述方法执行时都会堵塞,程序等待用户在命令行输入数据回车确认。
  • 数组:
    (1)声明一维数组有下列两种格式:

    1. 数组的元素类型 数组名[];
    2. 数组的元素类型 [] 数组名;
    3. 例如:
      float boy[];
      char[] cat;

    (2)声明二维数组有下列两种格式:

    1. 数组的元素类型 数组名[][];
    2. 数组的元素类型 [][] 数组名;
    3. 例如:
      float a[][];
      Char [][] b;
  • 为一维数组分配元素的格式如下:

    1. 数组名 = new 数组元素的类型[数组元素的个数];
    2. 例如: boy = new float[4];
    3. 数组的声明和分配空间可以在声明时同时完成:
      float boy []=new float[4];

1.1 IDEA真香

  • IDEA的一个实用功能:Split Vertically,对照其他代码修改代码很方便
  • Run:Alt+Shift+X
  • 修改变量或方法名:Alt+Shift +r
  • 查找替换:Ctrl+f或Ctrl+h
  • 查找方法在哪被调用过:Ctrl +Shift+h
  • 快捷操作:
    (1)Run:Alt+Shift+X
    (2)main方法:psvm(可以在Live Templates修改,main)
    (3)输出:sout+回车。或者"Hello".sout。
    (4)循环:fori
    (5)遍历数组:itar
    (6)在文件的settings的Live Templates查看模板。
    (7)可以在Live Templates中自定义模板。

第二章 运算符、表达式、语句

  • 如果表达式中最高精度是double(float、long)类型,则按double(float、long)运算。
  • 如果表达式最高精度低于int型,则按int精度进行运算。
  • java允许把不超出byte,short,char的取值范围的算术表达式的值赋值给byte,short,char。例如:(byte)30+'a"是结果为127的int型。a为97。
  int m=1;
  byte x;
  x=1+'a';//x=98.
  //x = m+'a';是错的
  • 关系运算符只能得到true或false。和C不一样,C得到的是1或0。
  • 尽量把常量写左边。j
  • java逻辑运算符&&,||,!两边只能是布尔类型表达式(即:只能是true&&false之类的。)。java不能是4&&5之类的,C则可以。
  • 位运算:按位与,按位或,按位异或(^)。二进制。
  • in
  • java的条件表达式只能是布尔类型的。if,while,
  • switch语句的括号里面不能是long类型的值。
  • for(声明循环变量:数组名){……}。循环变量依次与数组的每一个元素。这个循环变量不能在外面声明。

第三章 类和对象

  • 类的组成:
    (1)成员变量。和声明位置无关。

    1. 有默认值
    2. 有效范围是整个类。
    3. 声明成员变量给初值不是赋值语句。
    4. 不能在类中定义变量之后再给赋值语句。即:类体中没有语句,只能在方法体内。

    (2)方法。方法中有局部变量。

    1. 局部变量与声明位置有关。
    2. 局部变量和成员变量同名,则在方法体内,成员变量被隐藏,暂时失效。
    3. 使用this关键字使用成员变量。
    4. 局部变量没有默认值,不是C语言中的垃圾值。
  • 构造方法:创建对象时使用。
    (1)名字和类名完全相同,没有类型。
    (2)默认构造方法:我们没有写构造方法,编译器会自动加一个构造方法。
    (3)自定义构造方法。我们写了构造方法,编译器不会加默认构造方法。可以有多个构造方法(重载)。

  • 创建对象:类是一种数据类型。
    (1)声明对象:类声明的变量叫对象变量。相当于给对象起个名。
    (2)创建对象:使用new关键字为对象分配变量。即:实例化。相当于把这个对象造出来。
    (3)对象声明之后只是个空对象。只有在new之后才是一个完整的对象。我们要避免使用空对象,不然会出现编译通过,但是运行出错。

  • 使用对象:
    (1)对象.变量。对象.方法。

  • 对象的引用和实体:
    (1)对象本身中存放着引用,自己可以操作分配给自己的变量,调用类提供的方法。
    (2)分配给对象的变量称为对象的“实体”。
    (3)两个类型相同的对象,如果二者的引用相同(赋值),那么二者就具有完全相同的“实体”。例:obj1 = obj2

  • 类与程序的基本结构:
    (1)一个Java程序(工程)由若干个类构成。
    (2)这些类可以在一个源文件中,也可以分布在多个源文件中。提倡一源文件一个类。
    (3)有main方法的类叫主类。一个源文件只能有一个public类。public类的类名必须和源文件名一样。

  • 参数传值:
    (1)传值机制:方法中参数变量的值是调用者指定的值的拷贝
    (2)基本数据类型参数的传值。
    (3)引用类型参数的传值。

    1. 比如:数组int [] a;a = new int[4];,对象都是引用类型。
    2. 方法的参数是数组或对象时,把实参的值拷贝到形参中,实参和形参就指向同一个东西,即:可以通过形参改变实参的值。
  • 对象的组合:
    (1)一个类可以把某个对象作为自己的一个成员变量。

  • 组合与复用:
    (1)如果一个对象a组合了对象b,那么对象a就可以委托对象b调用其方法,即对象a以组合的方式复用对象b的方法。
    (2)通过组合对象来复用方法有以下特点:

    1. 通过组合对象来复用方法也称为“黑盒”复用,因为当前对象只能委托所包含的对象调用其方法,这样一来,当前对象对所包含的对象的的方法的细节一无所知。即:在类的内部使用这个对象成员的方法。
    2. 当前对象随时可以更换所包含的对象,即:对象与所包含的对象属于弱耦合的关系。
    3. 【注意】一个类声明的两个对象如果具有相同的引用,二者就具有完全相同的变量(实体)。
  • 实例变量和类变量:在类成员中加static修饰符的是类变量,否则就是类变量(静态变量)。
    (1)区别:

    1. 不同对象的实例变量互不相同。
    2. 所有对象共享类变量。
    3. 通过类名可以直接访问类变量。不需要通过对象。而实例变量只能通过对象访问。
  • 实例方法和类方法的定义:使用static关键字。
    (1)实例方法:没有使用static关键字修饰的方法叫实例方法。
    (2)类方法:使用static关键字修饰的方法叫类方法。
    (3)区别:

    1. 通过对象调用实例方法,只能通过对象。实例方法可以操作所有变量
    2. 可以通过类名调用类方法。也可以通过对象。类方法只能操作类变量(静态变量)
    3. 如果不需要操作成员变量,就可以将这样的方法写成静态的。比如:库函数Arrays.sort(a);,就是直接使用Arrays这个类名调用sort这个方法。
    4. 不能在静态方法中直接使用非静态的方法。如下,
   void fun1()
    {
        System.out.println("oio");
    }
    static void fun()
    {
        fun1();
        System.out.println("he");
    }

编译出错。

  • 方法重载:Java中有两种多态:重载和重写。
    (1)重载:一个类中可以有多个相同名字的方法,但必须保证方法的参数不同。不能以方法返回值区分。
  • this关键字:表示某个对象。用来访问本类成员。
    (1)this可以出现在实例方法和构造方法中,但不能出现在类方法(静态方法)中,但是可以使用类名来访问静态成员,如下。
    (2)因为实例方法一定是对象来调用,当一个对象调用实例方法时,那么该实例方法中的this就代表当前正在调用该方法的对象。
class AAA{
    static int c;
    static void set(int b)
    {
        AAA.c=b;//不能使用this.c=b;
    }
}
  • 包:类似与文件夹。包语句:package。
    (1)用【.】分隔。作为源文件的第一条语句。
    (2)按照包名形成的目录来存放字节码文件。

  • import语句:引入包中的类。不引入包,则写类的全称。
    (1)引入自定义包:把程序使用的自定义的包所形成的目录都放在同一文件夹中,import引入即可。

  • 访问权限:是指对象是否可以通过【.】运算符去操作自己的变量或方法。private,public、protected、友好。
    (1)注意:在编写类的时候,类中的实例方法总是可以操作该类中的实例变量和类变量、类方法总是可以操作自己的类变量,与修饰符无关。

  • 不同包不能访问友好类。

  • 基本类型的类封装:Byte、Integer、Short、Long、Float、Double和Character类。Character中有很多实用的类,类似于C中的String.h头文件的作用。

  • 对象数组:数组元素的对象。
    (1)创建对象数组:例:Demo [] arr = new Demo[10];,这只是创建了对象的数组,即:每个对象还都是空对象。
    (2)创建对象:例:arr[0] = new Demo();

【传送门】:
筑基期:Java基本知识
元婴期:Java笔记一
大乘期:Java笔记二
红尘仙:Java笔记三

发布了59 篇原创文章 · 获赞 47 · 访问量 5494

猜你喜欢

转载自blog.csdn.net/qq_44755403/article/details/104479836