上次讲了&等运算符,那么补上原码反码补码
原,反,补都是由符号的二进制。开头第一个表示正负,0为正,1为负。
原码无论数正负都是本身;
正数反码等于原码,负数反码出第一位符号位外取反;
正数补码等于原码,负数补码符号位为1,其余位取反,最后一位加1,也就是反码加1。
归纳:正数原反补都是本身;
负数原码本身,负数反码符号为1其余取反,负数补码符号为1其余取反末位加1;
移码符号为取反的补码。
一些关于重载和构造方法的知识:
1、重载:a、同一类中方法名相同
b、参数不同(包括类型,数量,顺序),返回值类型不是看方法是否重载所要看的. 记住重载就只看那两个条件.
2、Demo01 d1 =new Demo01();中Demo01其实是一个构造方法,无参的;
而若那个类写了有参构造方法就会把无参的覆盖,那么这么定义就是会报错;最后构造方法也能重载。
3、反编译找构造函数,javap -c -LCar.class 在cmd中运行查找,当然首先要跳转到class文件所在目录
可以看到反编译中到底是无参构造函数还是有参构造函数被调用了。
4、代码段和构造函数的不同,代码段先运行,与构造函数运行次数一样 ,这就牵扯到顺序问题,
代码段运行,构造函数运行 代码段写为{ ... }
一些关于数组(一维:但java中实际上是没有二维数组的)的知识:
1、定义:数组是我们常用的知识,数组存储一组相同的数据类型(分为基本数据类型和引用数据类型),
2、Person [] pers= new Person []{p1,p2};其中pers为引用型 放在栈里;Person放在堆里,p1p2放在堆里(引用栈,对象在堆) 数组是基本数据类型的话,放在栈里.
冒泡排序和二分法:(刚好遇到,以后应该还会再论述这方面的)
冒泡:每次找到最大值然后放在最右边,排n-1次,n为数组长度;选择:选一个最小的值,逐个比较找出真的最小值 插入,在前面生成局部有序数列
二分法:前提是有序数列Arrays.Sort(is); 排序char[]cs = str.toCharArray(); 把字符串str转换为数组cs
Randomrandom =new Random(); random.nextInt(10);
冒泡关键:for(inti=0;i<len-1;i++){
//每一轮过程
for(intj=0;j<(len-i-1);j++){
//比较is[j] is[j+1]
if(is[j]>is[j+1]...}...}
i从0开始到len-1,即[0,len-1),左实右虚,共len-1回
j从0开始到len-1-i ,因每一轮比较n-i次 即j 是(len-i)-1 ,因为从0开始所以比较(len-i)次。
this关键字和静态方法:
1、this 区分成员,局部名字相同时;调用自身构造函数this.name = name; this(name);//这个要放在构造函数第一行,否则错
2、 静态方法可以访问静态变量但静态变量不能加this ;
3、静态方法不能访问非静态变量 (否则 用存在的方法调用不存在的变量对象) 静态代码块只执行一次,可以多个按顺序执行
如 public static Text s1 =new Text();是跟静态代码块一个等级的 写前面就先运行
4、this age = String .value of(age);//把int 型转化为字符串型
5、 sc.hasNext();//sc是Scanner的一个对象这个方法就可以保证输入的是int