Java中的类
public class 类名{
1.成员变量
2.成员方法
3.构造器
4.代码块
5.内部类
}
相当于C语言中的结构体
封装:对象代表什么,就得封装相应的数据,并且提供数据对应的行为;
例子:人画圆
得到俩个对象,一个是人的对象,一个是圆的对象,因为要画圆的话,首先要知道圆的半径,而这个数据是属于圆的数据,那么画圆这个行为应该是要属于圆。
private:被此关键字修饰的成员只能在本类中访问(保证数据安全性)
public:公有的变量
构造方法(构造器):创建对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的;
特点:
1.方法名与类名相同,大小写也要一致
2.没有返回值类型,连void也没有
3.没有具体的返回值(不能由return 带回结果)
空参构造和有参构造(一般都会手动加上,无论用不用)
注意:没有写无参构造,是不能够调用无参构造的(如果没有写无参构造,虚拟机默认是无参构造,自己写了虚拟机就不会加上了)
标准的JavaBean类
1.类名需要见名知意
2.成员变量使用private修饰
3.至少提供俩种构造方法(无参构造和带全部参数的构造方法)
4.成员方法(提供每一个成员变量对应的set...() 和 get...(),如果还有其他行为也需写上)
有new这个关键字就会进堆内存,基本上是成员变量进堆内存
栈内存中记录堆内存的空间位置
p88
基本数据类型:数据值是存储在自己的空间中的特点:赋值给其他变量,也就是赋的真实的值(堆内存)
引用数据变量类型:数据值是存储在其他空间中,自己存储的是地址值。(栈内存)
特点:赋值给其他变量,赋的地址值。
p89
this的内存原理
this的作用:区分局部变量和成员变量
this的本质:所在方法调用值的地址值
就近原则:也就是局部变量和全局变量的区别
StringBuilder
可以看成一个容器
注意:toString 转换的字符串是new 出来的,是引用数据类型
如果没有变量参与,直接加的话是会复用串池中的字符串
如果有变量参与,那么就会在内存中重新创造新的字符串,会浪费内存
例如:
Sting s1 = "abc";
String s2 = s1 + "abc";//此时用到了变量s1,所以会重新开辟一个地方来存储s1的值
String s3 = "abc" + "abc"; //此时就是复用串池里面的数据,不会重新开辟空间
知识点:StringBuilder初始容量是16,若输入的字符串大于16但是小于34(*2+2),那么就是长度是正常长度,容量是34,若大于34,那么容量和长度相等;
例如:
StringBuilder sb = new StringBuilder("yyq");
System.out.println(sb);//输出结果是 yyq
sb.append(1);
sb.append(1.4);
sb.append(true);
System.out.println(sb);//输出 yyq11.4true
sb.reverse();
System.out.println(sb);//输出 eurt4.11qyy
StringJoiner
StringJoiner sj = new StringJoiner(delimiter<间隔符> : "" , prefix<开始符>: "" , suffix<结束符> : "");
例如:
StringJoiner sj = new StringJoiner("---","[","]");
//添加元素
sj.add("yyq").add("xyyz").add("zx");
System.out.println(sj);//输出 [yyq---xyyz---zx]
方法:程序中最小的执行单元
自我理解:也就相当于C语言中的函数
好处:提高代码的可维护性和复用性
方法的重载:同一个类中,方法名相同,参数不同的方法,与返回值无关
个数不同,类型不同,顺序不同