cmd的操作方法:dir 查看当前路径下的内容 cd 进入目录 cd..回退到上一次进
cd \ 1 \2只有进入深入目录才需要打斜杠否则不用
命令行打开软件切换到(一般情况bin)的软件名称.exe
指定什么格式输入什么内容否则相当于输入不进去
%c 字符 %d 整形
分隔成两个代码假如要使用另一部分的代码需要声明外部符号 extern 类型 代码名称
变量创建的本质:在内存中开辟一块空间存放数据
执行完程序时自动销毁
const 修饰不能改变 常属性 属于常变量 指针可以使其改变 ?
define SIZE 10 标识符常量 使size的值定为10
枚举常量 列举出所有可能 enum sex{nan nv };
默认第一个数值为0 .赋值看自己需求 赋值第一个后面会依次增加 。也可以给依次赋值
字符串的末尾隐藏一个\0其是字符串的结束标志作用防止造成输出其他地址后续地址的值
c语言strlen求字符串长度直到遇到\0截止\0不算长度
转义字符 转变原来的意思 遇到转义时可以想要输出\增加一个变为\使其输出
‘ ' ’ “ " ”使其能正常输出单双引号
c语言不支持注释嵌套
git回去用
浮点数除法两者之中必须有其中一个是浮点数取模只适应于整形数
siezeof 后面的括号可以省略 但如果是类型的话不省略 证明其是操作符
前置++先加加在使用
强制类型转化(类型)可能丢失数据
三目操作符 exp1?exp2:exp3 1为真 2执行3不执行 1 为假2不执行3执行 切记其最后表达式的值为整体的值
逗号表达式从左到右依次计算其结果是最后一个表达式的结果注:不能直接计算最后一个得到其值
【】其为一个操作符,下标引用操作符
signed有符号的 unsigned无符号的 typedef类型重定义的 union联合体类型
void 函数的返回值 ,参数,指针
git小乌龟的汉化版下载作业
控制大小的可以设置为默认值#define row 3
分隔成为不同部分的代码如果其他部分需要使用改为include"头文件"
x = rand()生成一个随机数
使用上面函数
#include #include
五子棋的写法?
类包含方法 方法包含变量
只能有一个public修饰的类
并且源文件名必修于public修饰的名字一样
strand((unsigned int)time(NULL))和其他的函数名字一样首字母大写
String是字符串类型
println ln的加不加代表着换不换行
打印数据不需要定义数据类型可以直接打印数据
ctr+d 默认加一行 ctr+x剪切
变量名小驼峰 mian可以用来做变量名合法不合理不建议用
int 类型的最大值参数和最小值参数(其他类型也有)
- Integer.MAX_VALUE
- Integer.MIN_VALUE
byte1 字节类型 short2 int 4 long8
float 4 double 8
char 2
符号位不属于 数值位
string类 数组 类 接口 引用数据类型
平常的类型是基本数据类型
赋值时超过其类型最大值报错
区分int long会在long的变量后加L
127+1 =-128 围绕成一个圈其最大值和最小值
数据类型不能存储这么大从一个极限到另外一个极限
double 和 float 小数最多只能精确到小数点后几位精度不一样
float后面加f
bite short 小于4个字节的赋值的字面值 没有超过表示的最大范围的时候不会被解析为整形
类型转化能往字节数多的转就往多的转防止丢失数据
字符串的尾部什么都没有
数据类型不同的话+会表示为拼接
取模没有整数限制
+=类似的操作符来说自动进行类型转化
前置++后置++
先自增在使用,后置先使用在自增
5!只能和true或者false直接联系使用可以!(a
短路在操作运算符逻辑与或逻辑或中执行前半部分不执行后半部分
三目运算符以最后一个:来分隔二目和三目
顺序语句之后的输出语句中不加括号是否会运行?
西北小村民谣
条件必须为布尔表达式只能是一或者零
有相同条件要求的话写在一起判断语句
eg判断瑞年
导包如以前的添加头文件
能做swith的有整数,枚举,字符,字符串
long可以用来做switch的参数类型吗
continue跳过本条语句,直接执行下一条语句
hasNestInt判断有没有下一个整数
nextInt读下一个整数
方法里面放类
方法不能嵌套
方法的调用需要开辟内存
方法调用结束内存销毁
.sout快捷可以快速输写输出函数
将一个具体的功能尽量划分就尽量划分开来以便后面可以使其各种实现不同的功能搭配起来又能实现其他的功能
重载1方法名必须相同2参数列表不同(个数类型顺序)3返回值不影响
递归打印123 数为123
数组下标不合法会越界会报错
可以创建字符串的数组
数组整体进行赋值的时候只有一次机会在定义的时
for(int x : arry){printf(x)
}(for-each)没有下标
for有下标
将数组中的值赋值给x输出x
候才可以
堆存放new对象的地方和平常数据不存储在一个地方重新开辟了一块内存以便使用同时这的访问效率高于平常存储的地方
变量存储数组的初始地址如指针
当对象没有人引用自动销毁回收
引用变量赋值为null当前不指向任何对象
只有引用才能指向对象对象不能指向对象
Arrays.toString(arry)将arry数组转变为字符串
sort(arry,0,2)将0-2之间的区间排序左闭右开
写传递数组参数的方法时切记写判断空的时候 方法
拷贝函数copyof(arry,arry.length)数组和数组的长度()长度也可以增加几倍相当于扩容但增加之后的值都为0(直接在长度后*2)也可以拷贝部分其为copyOfRange函数(arry,0,3)
浅拷贝和深拷贝
int[][] array = {{1,2,3},{4,5,6}];
int [][] array2 = new int[][]{{1,2,3},{4,5,6}};
int[][] array 3 = new int [2][3];
//错误 行不能省略,但列可以省略
int [][] array4 = new int [][3];
int [][] array4 = new[2][];
deepTopString(array)可以打印二位数组
类使用大驼峰
一个类放到一个java文件
一般情况下mian方法需要在public类下使用
一个java文件有一个类用其进行改变重命名
但若有多个类别这样
文件名要和public 类相同
传递给类内的数据值时需要加this.不加this传递的值给形参然后形参赋值给形参局部变量不会传给当前类创建的对象的值赋值
谁调用这个方法 那么this就是谁
七
成员属性/成员变量定义在方法外部,类内部的变量
1普通成员方法
2.静态成员方法
成员变量:没有初始化的时候有一个默认值
成员变量的数字类型其没有初始化会赋值为0 int 0 float 0.0f double 0.0
引用类型 为null sting null boolean false
char '\u0000'
就地初始化就是在写类时对成员变量进行赋值
构造方法: 没有返回值
方法名必须和类名一样,就是用来初始化成员变量
java会自动弄一下默认的构造方法当没有时候但不提供任何参数以便类的正常
使用,一但有个自己弄的构造方法,默认不会出现
构造方法可以有多个 构造方法之间可以构成重载之间的关系
this.(s,f)调用当前类中与参数匹配的其他构造方法,只能出现在构造方法当中
不能自己调用自己,并且this代表当前对象的引用
权限不写的话就是默认的
import java.util.* *号表示通配近似相当于导入了一个util的万能包导入util下的所有 尽量使用正常的导入包以免有相同的包有相同的方法名
自定义的包的名称是颠倒的反过来,包名会和文件名的路径一样
静态成员变量可以直接访问输出不依赖对象通过类名访问就可以
生命周期依赖于类的生命周期
静态成员方法当中不能调用非静态的成员变量或者非静态的成员方法(不包含this)
静态成员变量-》类变量同理方法就是类方法
静态代码块:
一般用来初始化静态成员
类加载的时候被调用
1静态代码块先执行后构造代码块在再继续执行对应的构造方法,静态其只执行一次,多个静态就进行组合拟合成一个大的静态
如果定义类时没有一个构造方法给类的成员变量进行赋值的话,那么输出其类的成员变量时会输出类的地址(java中会自动调用toString方法输出类的地址),在类中定义一个toString 方法返回其值就可以解决输出为地址
继承 :为了代码的复用
class Dog extends Animal {
Dog 子类 Animal 父类
}
同名的情况下优先看子类成员变量,无则看父类的。就近原则
super.调用重名的父类变量
只能在非静态才能方法才能使用
子类在构造之气先帮助父类进行构造
super(name,age)调用父类的构造方法,帮助其初始化子类从父类继承过来的成员,并不会生成父类对象
super 和this区别
this当前对象 super 父类对象
同:只能在类的非静态方法中使用,用来访问非静态成员方法和字段,在构造方法中调用时,必修是构造方法中的第一条语句并且不能同时存在
父类和子类中所有中都是先执行完静态(执行完父类和子类的静态后)在执行完实例化
protected主要应用于继承关系上前提子类继承的父类是public权限并且用其是需要用super来调用?
给类上加final使其不能继承了
final 给数据类型前一加 其变为数据常量,a只能被初始化一次不可变
不能进行多继承
final修饰方法,使其不能被重写
继承对共性进行抽取代码复用
多态
继承关系上 向上转型
子类和父类有同名的 覆盖/ 重写 方法 通过父类对象的引用 调用这个重写的方法--导致动态绑定
常见的可以向上转型
- 1直接赋值2方法的参数,
- 传参的时候进行向上转型3
- .返回值 向上转型(重点)
继承关系上满足返回值一样方法名一样方法繁荣参数链表一样构成了重写(覆盖)
@override重写时不报错若不重新报错
实现重写
被重写的方法的访问修饰限定符 在子类中要大于等于 父类的被private修饰的不能重写 static final 一样不能被重写(构造方法一样)
被重写的方法返回值可以不同,但必须是具有父子关系的
重载和重写的区别
重载相当于静态匹配其方法名相同但是其参数列表不同并且于返回值类型无关
重写相当于动态匹配其方法名相同参数列表想同并且其返回值类型一般相同(不同的话要求其是父子类关系)
object类是所有类的父类
init构造方法
静态绑定编译已经确定
动态绑定运行时确定
冒泡排序第二次遍历时的条件长度减去上一次遍历的i已经减一
在父类的构造方法当中可以调用子类和父类重写的方法此时会调用子类的方法此时也发生了动态绑定(不要使用并且此时子类的成员变量也没有被初始化其值为0)
abstract 加上之后可以使方法变为抽象方法并且类也
必须加上abstract变为抽象类抽象类不能进行实例化
抽象类和普通类一样可以定义成员变量和方法
类继承抽象类要重写其全部的方法才可以正常使用
abstract 和final不能同时存在,与private,static也不能同时实现
initof(向下转义)
接口是使用interface使用的
其不能有被实现的方法,只能有抽象方法,两个除外static default 方法
默认abstract修饰
接口成员变量默认是 public static final修饰
类和接口可以使用implements进行关联
接口不要写任何修饰符号保持简洁
instanceof(?)
接口可以去引用实现了该接口的具体类型
接口的default不能直接使用需要定义一个类来 implements通过子类来读可以重写也可以不重写重写的方法的访问权限只能是public
接口不能有(静态和实例)代码块 和构造方法
如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类
类的继承先继承一个类在加个接口(狗是一个动物 会跑)
看到super应该想到到对父类进行实例化
类和接口之间的关系 -》implements 实现
接口和接口之间 extends 拓展功能
名字比较 的原理?
一般情况下自定义的类型可以进行可比较的
根据比较器比较和根据默认的compareable接口
当没有量当中
存的是地址,把这个地址叫做引用变量/引用
克隆方法的调用抛出
protected父类可以调用子类
克隆的
person的克隆因为clone方法是返回于父类的所以其是父类然后在将其赋值给子类person
然后person.clone可以通过o
(person.clone)相似于object.clone()其赋值给person至于为什么可以复制出子类的全部底层代码实现
克隆一个父类的子类的全部成员变量后,使其全部复制,但其和刚才拷贝的值还是指向原来的父类 其父类的值改变两者都改变(浅拷贝)
为啥要使用object obj 因为要重写其改善他不重新写个方法的原因是增加后来者的代码可以读性增快代码的交地(拓展其功能) 重写都是为了尽可能的拓展其功能并且不改变其方法名称
内部类分为实例内部类 静态内部类 匿名内部类 局部内部类
访问内部类的时候同名优先访问内部类的成员变量
在内部类中访问外部类用外部类.this.成员变量
第二题
功能分完 之后权限不同区分权限,制造一个接口通过接口去区分权限 通过接口去控制通过向下转型去控制吗
整数放置最后防止回车被读入到最后一个
删除的时候:对比其名字读出其位置直接覆盖后面的也要循环将最后一个弄为空(直接给其最后赋值为NUll)
借:改类型
string 可以将一个字符串数组弄成 字符串
栈和推的区别?
string其中一部分为value一部分为hash
string str = ""代表其指向空
string str = null 代表其不指向任何你 对象
直接比较比较的是地址
使用.equal比较的是内容
(只能比较内容)
comparTo方法可以比较大小
s1>s2正数==0
忽略大小写compareToIgnoreCase
charAt(数字)可以取改位置的字符
indexof查某个字符第一次出现的下标lastIndexof倒着找
valueof()会将填入到里面的数据变成字符串
转变为大写是一个新的对象将其进行赋值给现在的
分隔可以在第一次分隔的基础上进行第二次分隔
trim不能去掉中间的空格
init构造方法
最后一个单词的长度
buffer和builder不用创建临时对象和销毁其所以减少时间
string修改时需要经常修改对象(string函数修改的都是创建一个新的变量)
build线程不安全
buffer线程安全
运行时异常 -》运行时
编译时异常-》编译时
try{存放代码}catch{异常存放}
finally{throw一般用于抛出自定义的异常
}
throws使用在方法的声明之后告诉方法的调用者,可能会抛出一个异常
如果一个方法内部存在编译时异常,此时这个编译时异常一定要处理目前处理方法是在定义时通过throws关键字声明异常,给了jvm没有处理运行还会报错
如果写一个自定义异常,要继承一个异常
继承运行时异常时不用写throws
自定义异常(看)
不能直接直接用父类接收所有的异常子类因为此时异常不精准
finally一定会被执行(用于释放资源) 用scanner最后要关闭scanner.close()