java学习笔记(8.3-8.9)
this语句
static关键字(非访问控制修饰符)
一个类可以包含以下类型变量:
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
将int数据类型转换成数组
将int数组转换成int类型
String类split方法
返回的是一个String数组(删除指定元素的数组)
public String[] split(String regex)
public String[] split(String regex, int limit)
limit参数控制应用模式的次数,因此影响生成的数组的长度。 如果极限n大于0,则模式最多应用n -1次,数组的长度不大于n ,数组的最后一个条目将包含超出最后一个匹配分隔符的所有输入。 如果n是非正的,那么模式将被应用到尽可能多的次数,并且数组可以有任何长度。 如果n为0,则模式将被应用尽可能多次,数组可以有任何长度,并且尾随的空字符串将被丢弃。
System.exit(0);
System.exit(0);
作用:JVM退出,即退出所有循环
\t相当于按了一个Tab键的位置
注意:在输出语句中 \t 可以不用单独拿+隔开
局部变量
局部变量没有默认值,所以局部变量被声明后,必须经过初始化才可以使用。
实例变量
- 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
- 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
- 实例变量可以声明在使用前或者使用后;
- 访问修饰符可以修饰实例变量;
- 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
- **实例变量具有默认值。**数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
形参和实参
形参变量只有在被调用时才分配内存单元, 在调用结束时, 即刻释放所分配的内存单元 。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
- 引用传递
引用传递:是指在调用函数时,将实际参数的地址传递到函数中,那么在函数中对参数进行修改,将会影响到实际参数
- 值传递
值传递:是指在调用函数时,将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,就不会影响到实际参数
如果形参是基本类型的变量,则实参不会变(值传递)。
注意: 类似的 String, Integer, Float, Double, Short, Byte, Long, Character等基本包装类型类。因为他们本身没有提供方法去改变内部的值,例如 Integer内部有一个 value 来记录 int基本类型的值,但是没有提供修改它的方法,而且 也是 final类型的,无法通过常规手段更改。所以虽然他们是引用类型的,但是可以认为它是值传递,这个也只是认为,事实上还是引用传递。
- 引用类型
引用类型包括: 类类型, 接口类型和 数组。
基本类型的封装类和String类型是引用类型,但是在参数传递时可视为基本类型。
如果是形参是引用类型的变量(对象或数组),那么修改形参时,实参会跟着改变(引用传递)。
- 方法中形参的值如何传递给实参
化为引用类型(集合,对象,数组)
this关键字的的用法
- 通过this关键字可以明确的访问一个类的成员变量,解决成员变量与局部变量名称冲突问题。
- 通过this关键字调用成员方法
- 在构造方法中访问构造方法使用this([参数1,参数2,…])
在有参构造方法中调用了无参构造方法,在使用this调用构造方法时有以下注意几点:
- 只能在构造方法中使用this()调用其他的构造方法,不能在成员方法中使用。
- 在构造方法中使用this()调用构造方法的语句必须位于第一行,而且只能出现一次。
- 不能在一个类中的两个构造方法中使用this()互相调用。
————————————————
原文链接:https://blog.csdn.net/qq_42494654/article/details/109190433
泛型方法不能加static
静态方法不能为泛型方法
原因:泛型方法中的形参 T的类型 需要由外部指定,而static静态方法无法对其进行指定
静态方法与非静态方法的相互调用
静态方法是无法直接调用非静态方法的,可以通过对象的引用来调用非静态方法,静态方法存储在内存中,而非静态方法是由对象的实例化来创建的,所以要通过对象的引用在静态方法中调用非静态方法
对于静态方法,其他的静态或非静态方法都可以直接调用它。
而对于非静态方法,其他的非静态方法是可以直接调用它的。但是其他静态方法只有通过对象才能调用它。静态方法不能被非静态方法覆盖。