No_16_0229 Java基础学习第八天

文档版本 开发工具 测试平台 工程名字 日期 作者 备注
V1.0 2016.02.29 lutianfei none

工具类中使用静态
帮助文档的制作
如何使用帮助文档
Math类学习
代码块
继承
继承概述
继承的好处
Java中继承的特点
Java中继承的注意事项
什么时候使用继承呢?
继承中成员变量的关系
super关键字
继承中构造方法的关系
继承中成员方法的关系
方法重写概述
方法重写的注意事项
练习题


工具类中使用静态

  • 当报错无法从静态上下文中引用非静态 方法xxx

    • 表明在静态方法中引用了非静态方法
  • 在工具类中当把构造方法私有后,外界就不能再创建对象了,此时将所有方法设为静态后。可以根据静态方法的特点:通过类名来调用。
  • Eg:
  1. /*
  2. 我想要对数组进行操作
  3. 在同一个文件夹下,类定义在两个文件中和定义在一个文件中其实一样的。
  4. */
  5. class ArrayDemo {
  6. public static void main(String[] args) {
  7. //定义数组
  8. int[] arr = {28,55,37,46,19};
  9. //静态方法
  10. //printArray(arr);
  11. //非静态方法
  12. //ArrayDemo ad = new ArrayDemo();
  13. //ad.printArray(arr);
  14. //测试类的作用:创建其他类的对象,调用其他类的功能。
  15. //而我们现在的操作是跟数组相关的,所以,你应该把这些操作定义到数组操作类中
  16. //定义一个数组的操作类
  17. //有了数组操作类之后的调用
  18. //ArrayTool at = new ArrayTool();
  19. //at.printArray(arr);
  20. //方法改进为静态后,就可以直接通过类名调用
  21. ArrayTool.printArray(arr);
  22. }
  23. /*
  24. public static void printArray(int[] arr) {
  25. for(int x=0; x<arr.length; x++) {
  26. if(x == arr.length-1) {
  27. System.out.println(arr[x]);
  28. }else {
  29. System.out.print(arr[x]+", ");
  30. }
  31. }
  32. }
  33. */
  34. //假设该方法不是静态的
  35. /*
  36. public void printArray(int[] arr) {
  37. for(int x=0; x<arr.length; x++) {
  38. if(x == arr.length-1) {
  39. System.out.println(arr[x]);
  40. }else {
  41. System.out.print(arr[x]+", ");
  42. }
  43. }
  44. }
  45. */
  46. }
  47. class ArrayTool {
  48. //把构造方法私有,外界就不能在创建对象了
  49. private ArrayTool(){}
  50. public static void printArray(int[] arr) {
  51. for(int x=0; x<arr.length; x++) {
  52. if(x == arr.length-1) {
  53. System.out.println(arr[x]);
  54. }else {
  55. System.out.print(arr[x]+", ");
  56. }
  57. }
  58. }
  59. }

帮助文档的制作

  • 制作工具类

    • ArrayTools
  • 制作帮助文档(API)
    • javadoc -d 目录 -author -version ArrayTool.java

      • 目录可以写一个文件的路径
  • 制作帮助文档出错:
  • 找不到可以文档化的公共或受保护的类:告诉我们类的权限不够。修改方法在类前面加public修饰。

如何使用帮助文档

  • 点击显示,找到索引,出现输入框
  • 你应该知道你找谁?举例:Scanner
  • 看这个类的结构(需不需要导包) 注:java.lang包下的类不需要导入,其他的全部需要导入。
    • 成员变量 说明书中对照为字段摘要
    • 构造方法 说明书中对照为构造方法摘要
      • 有构造方法 : 创建对象
      • 没有构造方法:成员可能都是静态的,通过类名调用。
    • 成员方法 方法摘要
      • 看左边

        • 是否静态:如果静态,可以通过类名调用
        • 返回值类型:定义返回的是说明,就用什么接收。
      • 看右边
        • 方法名,不要打错
        • 参数列表:需要什么参数,就给什么,需要几个给几个
    • 看版本说明
  • 看这个类的说明
    • 看构造方法
    • 看成员方法

Math类学习

  1. /*
  2. Math:类包含用于执行基本数学运算的方法
  3. 由于Math类在java.lang包下,所以不需要导包。
  4. 特点:
  5. 没有构造方法,因为它的成员全部是静态的。
  6. 掌握一个方法:
  7. 获取随机数
  8. public static double random():返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
  9. */
  10. class MathDemo {
  11. public static void main(String[] args) {
  12. //获取一个随机数
  13. //double d = Math.random();
  14. //System.out.println(d);
  15. //需求:我要获取一个1-100之间的随机数,肿么办?
  16. for(int x=0; x<100; x++) {
  17. int number = (int)(Math.random()*100)+1;
  18. System.out.println(number);
  19. }
  20. }
  21. }

代码块

  • 在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块构造代码块静态代码块同步代码块(多线程讲解)。
  • 局部代码块
    • 方法中出现;限定变量生命周期,及早释放,提高内存利用率
  • 构造代码块
    • 在类中,方法外出现;
    • 多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法执行。
      • 作用:可以把多个构造方法中的共同代码放到一起。
  • 静态代码块
    • 在类中方法外出现,加了static修饰
    • 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次
  • eg1 :
  1. class Code {
  2. static { //静态代码块
  3. int a = 1000;
  4. System.out.println(a);
  5. }
  6. //构造代码块
  7. {
  8. int x = 100;
  9. System.out.println(x);
  10. }
  11. //构造方法
  12. public Code(){
  13. System.out.println("code");
  14. }
  15. //构造方法
  16. public Code(int a){
  17. System.out.println("code");
  18. }
  19. //构造代码块
  20. {
  21. int y = 200;
  22. System.out.println(y);
  23. }
  24. //静态代码块
  25. static {
  26. int b = 2000;
  27. System.out.println(b);
  28. }
  29. }
  30. class CodeDemo {
  31. public static void main(String[] args) {
  32. //局部代码块
  33. {
  34. int x = 10;
  35. System.out.println(x);
  36. }
  37. //找不到符号
  38. //System.out.println(x);
  39. {
  40. int y = 20;
  41. System.out.println(y);
  42. }
  43. System.out.println("---------------");
  44. Code c = new Code();
  45. System.out.println("---------------");
  46. Code c2 = new Code();
  47. System.out.println("---------------");
  48. Code c3 = new Code(1);
  49. }
  50. }
  51. /*
  52. * 程序运行结果:
  53. 10
  54. 20
  55. ---------------
  56. 1000
  57. 2000
  58. 100
  59. 200
  60. code
  61. ---------------
  62. 100
  63. 200
  64. code
  65. ---------------
  66. 100
  67. 200
  68. code
  69. */
  • Eg2 :
  1. class Student {
  2. static {
  3. System.out.println("Student 静态代码块");
  4. }
  5. {
  6. System.out.println("Student 构造代码块");
  7. }
  8. public Student() {
  9. System.out.println("Student 构造方法");
  10. }
  11. }
  12. class StudentDemo {
  13. static {
  14. System.out.println("林青霞都60了,我很伤心");
  15. }
  16. public static void main(String[] args) {
  17. System.out.println("我是main方法");
  18. Student s1 = new Student();
  19. Student s2 = new Student();
  20. }
  21. }
  22. /*
  23. 写程序的执行结果。
  24. 林青霞都60了,我很伤心
  25. 我是main方法
  26. Student 静态代码块
  27. Student 构造代码块
  28. Student 构造方法
  29. Student 构造代码块
  30. Student 构造方法
  31. */

继承

继承概述

  • 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
  • 通过extends关键字可以实现类与类的继承
    • ** class 子类名 extends 父类名 {} **
  • 单独的这个类称为父类基类或者超类;这多个类可以称为子类或者派生类
  • 有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。
  1. class Dad(){}
  2. class Son extends Dad {}

继承的好处

  • 提高了代码的复用性

    • 多个类相同的成员可以放到同一个类中
  • 提高了代码的维护性
    • 如果功能的代码需要修改,修改一处即可
  • 让类与类之间产生了关系,是多态的前提
    • 其实这也是继承的一个弊端:类的耦合性很强
  • 开发的原则:低耦合,高内聚
    • 耦合:类与类的关系。
    • 内聚:就是自己完成某件事情的能力。

Java中继承的特点

  • Java只支持单继承,不支持多继承。

    • 一个类只能有一个父类,不可以有多个父类。

      • class SubDemo extends Demo{} //ok
      • class SubDemo extends Demo1,Demo2…//error
  • Java支持多层继承(继承体系)
    • class A{}
    • class B extends A{}
    • class C extends B{}

Java中继承的注意事项

  • 子类只能继承父类所有非私有的成员(成员方法和成员变量)

    • 其实这也体现了继承的另一个弊端:打破了封装性
  • 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
  • 不要为了部分功能而去继承
  • Eg1:
  1. class Father {
  2. private int num = 10;
  3. public int num2 = 20;
  4. //私有方法,子类不能继承
  5. private void method() {
  6. System.out.println(num);
  7. System.out.println(num2);
  8. }
  9. public void show() {
  10. System.out.println(num);
  11. System.out.println(num2);
  12. }
  13. }
  14. class Son extends Father {
  15. public void function() {
  16. //num可以在Father中访问private
  17. //System.out.println(num); //子类不能继承父类的私有成员变量
  18. System.out.println(num2);
  19. }
  20. }
  21. class ExtendsDemo3 {
  22. public static void main(String[] args) {
  23. // 创建对象
  24. Son s = new Son();
  25. //s.method(); //子类不能继承父类的私有成员方法
  26. s.show();
  27. s.function();
  28. }
  29. }

什么时候使用继承呢?

  • 继承中类之间体现的是:”is a”的关系。
  • 假设法:如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。

继承中成员变量的关系

  • 案例演示

    • 子父类中同名和不同名的成员变量
  • 结论:
    • 在子类方法中访问一个变量
    • 首先在子类局部范围找
    • 然后在子类成员范围找
    • 最后在父类成员范围找(肯定不能访问到父类局部范围)
    • 如果还是没有就报错。(不考虑父亲的父亲…)
super关键字
  • super的用法和this很像

    • this代表本类对应的引用。
    • super代表父类存储空间的标识(可以理解为父类引用)
  • 用法(this和super均可如下使用)
    • 访问成员变量

      • this.成员变量
      • super.成员变量
    • 访问构造方法(子父类的构造方法问题讲)
      • this(…) :调用本类的构造方法
      • super(…):调用父类的构造方法
    • 访问成员方法(子父类的成员方法问题讲)
      • this.成员方法()
      • super.成员方法()

继承中构造方法的关系

  • 子类中所有的构造方法默认都会访问父类中空参数的构造方法

    • 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
    • 每一个构造方法的第一条语句默认都是:super()
  1. class Father {
  2. int age;
  3. public Father() {
  4. System.out.println("Father的无参构造方法");
  5. }
  6. public Father(String name) {
  7. System.out.println("Father的带参构造方法");
  8. }
  9. }
  10. class Son extends Father {
  11. public Son() {
  12. //super();//默认都会有的
  13. System.out.println("Son的无参构造方法");
  14. }
  15. public Son(String name) {
  16. //super();//默认都会有的
  17. System.out.println("Son的带参构造方法");
  18. }
  19. }
  20. class ExtendsDemo6 {
  21. public static void main(String[] args) {
  22. //创建对象
  23. Son s = new Son();
  24. System.out.println("------------");
  25. Son s2 = new Son("林青霞");
  26. }
  27. }
  • 程序运行结果:

  • 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢,如何解决?

    • 会报错
    • 解决办法:
      • A:在父类中加一个无参构造方法
      • B:通过使用super关键字去显示的调用父类的带参构造方法
    • 子类中一定要有一个访问了父类的构造方法,否则父类数据就没有办法初始化。
  • 注:super(…)必须放在第一条语句上,否则就可能出现对父类的数据进行了多次初始化,所以必须放在第一条语句上面。
  • 一个类的初始化过程
    • 成员变量进行初始化
    • 默认初始化
    • 显示初始化
    • 构造方法初始化
  • A:一个类的静态代码块,构造代码块,构造方法的执行流程
    • 静态代码块 > 构造代码块 > 构造方法
  • B:静态的内容是随着类的加载而加载
    • 静态代码块的内容会优先执行
  • C:子类初始化之前先会进行父类的初始化
  • 练习1
  1. /*
  2. 看程序写结果:
  3. A:成员变量 就近原则
  4. B:this和super的问题
  5. this访问本类的成员
  6. super访问父类的成员
  7. C:子类构造方法执行前默认先执行父类的无参构造方法
  8. D:一个类的初始化过程
  9. 成员变量进行初始化
  10. 默认初始化
  11. 显示初始化
  12. 构造方法初始化
  13. 结果:
  14. fu
  15. zi
  16. 30
  17. 20
  18. 10
  19. */
  20. class Fu{
  21. public int num = 10;
  22. public Fu(){
  23. System.out.println("fu");
  24. }
  25. }
  26. class Zi extends Fu{
  27. public int num = 20;
  28. public Zi(){
  29. System.out.println("zi");
  30. }
  31. public void show(){
  32. int num = 30;
  33. System.out.println(num); //30
  34. System.out.println(this.num); //20
  35. System.out.println(super.num); //10
  36. }
  37. }
  38. class ExtendsTest {
  39. public static void main(String[] args) {
  40. Zi z = new Zi();
  41. z.show();
  42. }
  43. }
  • 练习2:
  1. /*
  2. 看程序写结果:
  3. A:一个类的静态代码块,构造代码块,构造方法的执行流程
  4. 静态代码块 > 构造代码块 > 构造方法
  5. B:静态的内容是**随着类的加载而加载**
  6. 静态代码块的内容会优先执行
  7. C:子类初始化之前先会进行父类的初始化
  8. 结果是:
  9. 静态代码块Fu
  10. 静态代码块Zi
  11. 构造代码块Fu
  12. 构造方法Fu
  13. 构造代码块Zi
  14. 构造方法Zi
  15. */
  16. class Fu {
  17. static {
  18. System.out.println("静态代码块Fu");
  19. }
  20. {
  21. System.out.println("构造代码块Fu");
  22. }
  23. public Fu() {
  24. System.out.println("构造方法Fu");
  25. }
  26. }
  27. class Zi extends Fu {
  28. static {
  29. System.out.println("静态代码块Zi");
  30. }
  31. {
  32. System.out.println("构造代码块Zi");
  33. }
  34. public Zi() {
  35. System.out.println("构造方法Zi");
  36. }
  37. }
  38. class ExtendsTest2 {
  39. public static void main(String[] args) {
  40. Zi z = new Zi();
  41. }
  42. }
  • 练习3(有难度理解不深刻)
  1. /*
  2. 看程序写结果:
  3. A:成员变量的问题
  4. int x = 10; //成员变量是基本类型
  5. Student s = new Student(); //成员变量是引用类型
  6. B:一个类的初始化过程
  7. 成员变量的初始化
  8. 默认初始化
  9. 显示初始化
  10. 构造方法初始化
  11. C:子父类的初始化(分层初始化)
  12. 先进行父类初始化,然后进行子类初始化。
  13. 结果:
  14. YXYZ
  15. 问题:
  16. 虽然子类中构造方法默认有一个super()
  17. 初始化的时候,不是按照那个顺序进行的。
  18. 而是按照分层初始化进行的。
  19. 它仅仅表示要先初始化父类数据,再初始化子类数据。
  20. */
  21. class X {
  22. Y b = new Y();
  23. X() {
  24. System.out.print("X");
  25. }
  26. }
  27. class Y {
  28. Y() {
  29. System.out.print("Y");
  30. }
  31. }
  32. public class Z extends X {
  33. Y y = new Y();
  34. Z() {
  35. //super
  36. System.out.print("Z");
  37. }
  38. public static void main(String[] args) {
  39. new Z();
  40. }
  41. }

继承中成员方法的关系

方法重写概述

  • 子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖方法复写
  • 使用特点:
    • 如果方法名不同,就调用对应的方法
    • 如果方法名相同,最终使用的是子类自己的
  • 方法重写的应用:
    • 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。

方法重写的注意事项

  • 父类中私有方法不能被重写
  • 子类重写父类方法时,访问权限不能更低
  • 父类静态方法,子类也必须通过静态方法进行重写。(其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中会讲解)
  1. class Phone {
  2. public void call(String name) {
  3. System.out.println("给"+name+"打电话");
  4. }
  5. }
  6. class NewPhone extends Phone {
  7. public void call(String name) {
  8. //System.out.println("给"+name+"打电话");
  9. super.call(name);
  10. System.out.println("可以听天气预报了");
  11. }
  12. }
  13. class ExtendsDemo9 {
  14. public static void main(String[] args) {
  15. NewPhone np = new NewPhone();
  16. np.call("林青霞");
  17. }
  18. }

练习题

  • Eg1:方法重写和方法重载的区别?方法重载能改变返回值类型吗?

    • 方法重写(Override)

      • 在子类中,出现和父类中一模一样的方法声明的现象。
    • 方法重载(Overload)
      • 同一个类中,出现的方法名相同,参数列表不同的现象。

        方法重载能改变返回值类型,因为它和返回值类型无关。

  • Eg2: this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。
    • this:代表当前类的对象引用
    • super:代表父类存储空间的标识。(可以理解为父类的引用,通过这个东西可以访问父类的成员)
    • 场景:
      • 成员变量:

        • this.成员变量
        • super.成员变量
      • 构造方法:
        • this(…)
        • super(…)
      • 成员方法:
        • this.成员方法
        • super.成员方法
  • Eg3:
  1. //定义人类
  2. class Person {
  3. //姓名
  4. private String name;
  5. //年龄
  6. private int age;
  7. public Person() {
  8. }
  9. public Person(String name,int age) { //"林青霞",27
  10. this.name = name;
  11. this.age = age;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public int getAge() {
  20. return age;
  21. }
  22. public void setAge(int age) {
  23. this.age = age;
  24. }
  25. }
  26. //定义学生类
  27. class Student extends Person {
  28. public Student() {}
  29. public Student(String name,int age) { //"林青霞",27
  30. //this.name = name;
  31. //this.age = age;
  32. super(name,age);
  33. }
  34. }
  35. //定义老师类
  36. class Teacher extends Person {
  37. }
  38. class ExtendsTest4 {
  39. public static void main(String[] args) {
  40. //创建学生对象并测试
  41. //方式1
  42. Student s1 = new Student();
  43. s1.setName("林青霞");
  44. s1.setAge(27);
  45. System.out.println(s1.getName()+"---"+s1.getAge());
  46. //方式2
  47. Student s2 = new Student("林青霞",27);
  48. System.out.println(s2.getName()+"---"+s2.getAge());
  49. //补齐老师类中的代码并进行测试。
  50. }
  51. }

来自为知笔记(Wiz)

时间: 2024-10-29 10:45:46

No_16_0229 Java基础学习第八天的相关文章

Java基础学习第八天

应用程序 ------------- 进程 ------------- 1.运行时(runtime)应用程序. 2.进程之间的内存不是共享(独占) 3.进程间通信使用的socket(套接字). 多线程 ------------- 1.同一个进程内并发执行的代码段. 2.线程之间共享内存. 3.创建灵活响应的桌面程序.(带操作界面的程序) 4.每个运行着的线程对应一个stack(栈). 5.应用程序至少有一个线程(主线程) java.lang.Thread   ( Thread 线程类) ----

No_16_0229 Java基础学习第九天

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.29 lutianfei none final 关键字多态多态概述多态的分类:多态中的成员访问特点:多态中的转型问题抽象类抽象类概述抽象类特点抽象类的成员特点抽象类的几个小问题接口接口概述接口特点接口成员特点类与类,类与接口以及接口与接口的关系抽象类和接口的区别 final 关键字 final关键字是最终的意思,可以修饰类,成员变量,成员方法. 特点: 修饰的类,类不能被继承 修饰的变量,变量就变成了常量,只能被

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

Java基础学习--抽象类与抽象函数

Java基础学习--抽象类与抽象函数 abstract class 抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象: 抽象类中的抽象函数没有函数体,例如:public abstract void move(); 一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的. 抽象类中所有的的抽象函数必需子类的覆盖,而非抽象函数不需要覆盖.因为子类会继承父类的函数,如果不去覆盖继承来的抽象函数,那么子类就含有抽象函数,含有抽象函数的类必须要声明为抽象类.

JAVA基础学习笔记(1)

今天第一天开始学JAVA,时间:2014年6月17日 学习内容:1.java环境的架设 2.JAVA基本数据类型 1.JAVA环境的架设       1.要先去下载JDK,下载地址 2.安装完成后,设置环境变量 1.1环境变量的设置        1.右键-我的电脑-属性-高级-环境变量-系统变量,找到PATH,在里面加入jdk里bin目录的地址 如:c:\java\bin; 2.新建-名为classpath,值为. 1.2测试JAVA是否配置正确        1.在cmd里面输入javac.

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

java基础学习笔记day01

java基础学习笔记day01 1.软件开发: 软件:按照特定顺序组织的计算机数据和指令的集合 开发:软件的制作过程 软件开发:借助开发工具和计算机语言制作软件 2.java概述: java之父:詹姆斯·高斯林 JDK:java开发环境 jre:java运行环境 JVM:java虚拟机 java跨平台是因为,JVM能在不同的平台运行,JVM是跨平台的 JavaSE:标准版 JavaME:手机端,物联网 JavaEE:企业版,互联网项目 3.java语言特点: 简单性 解释性 面向对象 高性能 分

Java基础学习1-Java标识符及基本类型

暑假闲来无事,重新学习Java,希望能够加深自己对Java的理解与深入. 第一天,从Java标识符开始. Java标识符的命名规则 - 标识符必须以字母.下划线.美元符$开头. - 标识符其它部分可以是字母.下划线.美元符$和数字的任意组合. - Java标识符的大小写敏感,无长度限制(但是也不要太长,会变成裹脚布的(/ □ \)). - 不可以是Java的关键字(这点只要是有点基础的都会知道啦,Java的关键字还挺多的哦,小心踩到地雷呀). 下面是一个小栗子. /* *测试标识符的写法 */