java速通笔记
java文件构成
1.class类+方法函数类分成两种:javabean事物类和main测试类。
如果class是pubiic class就如果只能写这一个+类名要和文件同名
2.class只在文件名最开头出现
易错
封装
javabean类封装对应的数据和提供数据的行为
格式:
1-1.在javabean类
- 成员变量要用private修饰
- 无参和有参都要写,属于重载(构造函数的作用:由虚拟机自动调用不写自动产生来初始
- 成员方法 每一个变量都要有对应的setxxx()和getxxx()化变量的)
如果你想设置一个默认值可以在无参的构造函数里面写this(a,b,c)不赋值的为null和0其他要赋值的就赋值
1-2在main测试类里方法函数必须有一个public static void main(String[] args),这里只有args可以改名字。
1-3工具类
功能封装为一个工具
格式:
- 构造函数修饰符是private
- 成员函数 修饰符里要用static
1-4方法函数的格式
[修饰符列表] 返回值类型 方法名(形参){方法体}。
方法不调用就不执行,编写顺序和执行顺序无关。
javabean里的函数分为:
没有static的普通成员函数 对象.函数(参数)调用
有static的成员函数:类名.函数(参数)调用 成员变量也是类似的
测试类的函数
就正常的使用就好了
工具类
- static的成员函数:类名.函数(参数)调用
静态方法只能被静态调用
1-5 构造函数的格式
修饰符 类名(参数){方法体}
继承
java中提供关键字extends建立起父类到子类的联系
写法思路画图从下往上 最高层全部者共性以此递减共性(如果共性一样但是内容不一样的话就重写,(重写如果某者有单独额外的就单独写在类里面+super.eat()这两个就好了)) 写代码从上往下
格式: public class 子类 extends 父类{}
*在子类里面对于父而言
- 成员变量公私都可以访问,如果不写 name,this.name,super.name就按照就近原则来访问
- 如果有额外的变量按照前文的javabean成员变量构造的方法构造就行了
- 构造函数公私都不能访问
- 无参构造函数内只写一个super()即可(自动会帮忙写)
- 有参构造函数里共同的用super()传过去必须要写在第一排
- 有额外的就按前文javabean的写法写就好了
- javabean里的成员函数公能问私不能访问 如果不写this.eat,super.eat就是就近 原则
- @Override方法重写 和父类的要重写的保持一模一样且添加到虚方法表的方法才能被重写
- 如果有额外get和set和其他方法按照前文的javabean的方式写就好了
*在测试类里面对子父的使用
- 成员变量与构造函数
- 测试类照旧
多态
三个原则
孩子先继承老子–在测试类中可以用父亲引用孩子实例化(Animal al=new cat())-涉及到重写
三种特殊类
抽象类
特点
在class前面加abstract
抽象类不能被实例化,只有父亲引用子类的实例化方法(extends)
子类继承后必须重写抽象方法@
抽象类中特殊一种:接口 interface(去掉class)
特点
去掉class只剩interface
接口类不能被实例化,只有父亲引用子类的实例化方法(entends改为implements)
子类继承后必须重写抽象方法@
孩子可以多个接口类
泛型类
特点
数据类型
基本数据类型+引用数据类型(数组 类 接口)输入语句
Scanner s=new Scanner(System.in);int i=s.nextInt();String str=s.next();
基本语句和c和c++都一样
包
方便代码模块化,一个大型的软件项目可以根据功能划分包
final
修饰变量-变量不能修改
修饰方法-不能被子类修改
修饰类-不能被子类继承
集合
和数组比较
- 数组可以存基本数据类型或者引用数据类型
集合只能存引用数据类型(基本数据类型必须转化为包装类)
往集合里面放东西先考虑是不是引用数据类型
如果不是
除了char->Character int->Integer以外其他都是大写开头就行
- 利用泛型:限定集合中数据的类型
ArrayList <String> list = ArrayList <String> ();
这里得理解前面一坨是类型。
- ArrayList这个类是java已经封装好的类,如果打印此时的对象,展示的不是地址而是对象的内容【x】
- 成员方法:boolean add(E e) boolean remove(E e) E remove(int index) E set(int index,E,e) E get(int index) int size(),a.sort((m,n)->m-n)
字符串类
不可变对象
创建方法
- 直接赋值
- String a=new String(可有参也可无参)
- String a=new String(字符数组或者字节数组)
如果要修改字符串的内容,用字符数组的方式
字符串怎么转化为字符数组
.toCharArray()
如果对字节数组的转化用字节数组的方式
常用方法
.length()
.charAt(index)
.substring(startindex,endindex)
.equal(stringb)
.repalce(old char,new char)
.replace(old string,new string)
和整数的相互转化:
转化为整数Integer.praseInt()
转换为字符串 String.valueOf()
- StringBuilder
创建
用StringBulider之后要返回字符串.toString()
方法
增:
删:
改:
翻转:
- StringJoiner
创建
用完StringJoiner辅助之后要用.toString()返回去
方法
增:
关于new
只要new出来的都是放到了堆内存上,这个是栈上会有这个数据,但是指向堆里放的地址,对于字符串而言,new就会浪费空间,而不用new的时候也就是直接赋值的话,java会去串池里面寻找,如果有就复用,没有才新创建。
等号到底比的是什么
基本数据类型比较数据值
饮用数据类型比较地址值
整数转为字符串
Interger.toStirng()