个人java学习的复习笔记 _walkman
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了个人java学习的复习笔记 _walkman,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10346字,纯文字阅读大概需要15分钟。
内容图文
![个人java学习的复习笔记 _walkman](/upload/InfoBanner/zyjiaocheng/600/cbbb4601cb4a4c61a39763fa37dcdc3c.jpg)
大二学习java时候自己整理的摘要,现面临考研找工作,我选择了工作,坚持自己的选择!回头再次复习java,感觉有些内容已经熟悉看视频有点浪费时间,故再次翻阅自己的笔记。同时准备创建属于自己的博客
基本语法
一.数据类型转换
(1).自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,
容量小的会自动转换为
//容量大的数据类型
char,byte,short ==>int ==>long =>floatdouble
int i1=12;short S1= 2;
int i2=i1+s1;
float f1 =12.3F
;floatf2=f1+ i2;
特殊:当 char、byte、shrot、之间做运算时。默认结果为int类型。
(2).强制类型转化
容量大的转换为容量小的要用强制类型转换符号:()
字符串与基本数据之间的运算只能是连接运算:+ 这个加号只能是连接 不要当成加减
运算结果仍然是字符串
float类型记得末尾加上f F, long类型的要加l L
String binary = Integer .toBinaryString(i);转换为字符串的二进制
System . out. println(binary);
String hex = Integer . toHexString(i); 转换为字符串的类型的十六进制
二.运算符
/*取模运算的结果取决与被摸数 被摸数为正结果为正 否 为负
short s=3; s = s+1 s+=1 ; 后者不会改变s的数据类型还能实现运算
前者因为s+1会自动转为int 然后将int复制赋值给s 等于int 赋值给short会报错
+= = /= -= 不会改变本来的数据类型!int i=1 i=0.1 i0
“hello” instanceof String ==true
boolean a= true;boolean b . false;
逻辑运算符 与或非 & | !
System.out. println(a & b);System.out. println(a && b); &同时成立 | 或 有一则可
System.out. println(a I b);System.out. println(a ll b) ;
System. out. println(!a & b);
System. out. println(a^b); ccddcd
双符号 为短路符号 左端成立或不成立 不再看右端
位运算符 << >> >>> | & ~ ^ ^亦或运算相异时候为1
左移<<几位就是乘2的几次方 右移有两种
交换两个变量的值m,n 不用提供临时变量 1 m=m^n 2 n=m^n 3 m= m^n
m=m+n n= m-n m=m-n
*/
三元运算符 ()? 表达式1:表达式2;
要求 表达式1和表达式2为同种数据类型
三元一定可以用if else 实现。
面向对象
一.面向对象思想 ,类对象之间的关系
首先考虑这个问题涉及到哪些类;然后考虑类应该具备怎么样
的属性和方法;最后考虑类和类之间的关系
1.关联关系(最弱关系)一个类的方法里面的形参是另一个类的对象
2.继承关系(xx是一种xx)游泳运动员是一种球类运动员,学生是一种人。
3.聚合关系(xx是xx的一部分) 队长是球队一部分(聚集) 胳膊
是身体一部分(组合 密不可分);
4.实现关系 方法的实现不同 卡车有卡车走的方法 马车有马车走的方法
二**.java数据类型以及数据类型的转换**
java里面看到 整数默认为int 类型 看到 小数默认为double 类型
char short byte 进行混合运算时 都先转换为int类型 所以有时候注意
需要强制类型转换
public class leixingzhuanhuan
{
public static void main(String [] args)
{
float a= 1.2F; byte b = 5;
long c = 88888888888L;
}
}
三.java的引用和c语言的指针
一提到引用就是 一小块内存指向一大块内存
其实就是栈指向堆,类似于c语言中malloc在堆中申请空间
int * 一个指针变量指向该空间
public void change3(birthday b) 他传过来的是引用类型 不是值类型
{ b.SetDay(22;)}
这个相当于传入一个地址(birthday b 他可以指向堆内存的空间)利用这个
地址调用函数,修改了堆内存的数值;相当与传指针来修改 主调函数;
其他的与c相同,形参相当于局部变量,在栈内存里,调用结束后出栈。
直接消失;
四.重载
函数名一样返回值类型一样
参数不一样 参数数据类型不一样或者参数个数不一样
调用函数时 编译器会根据你输入的参数来为你选择
五.关键字this,static
一般出现在类的方法定义中。
this 可以看做是一个引用(指针)指向当前对象
例子:
public class leaf
{
int = 0;
leaf(int i)
{ this.i = i} //把形参i的值 赋给 this指向的leaf对象
leaf increanment()
{
i++;return this;
}
}
静态的方法不能访问非静态的成员,需要访问则new一个对象
静态方法即main函数
可以通过对象引用 或者类名(不需要实例化)访问静态成员
六.package
1.如果你要把一个类放到包里面 第一句话必须写package
package后面想跟多少层包就跟多少层
编译出来的class文件必须位于正确的目录下面 和包的层次完全一致
2.如果你想在另外的类想要包里的类 必须要把名字给写全了 包名.类名
或者用 import import 包名.类名(*) 引入
访问同一个包中的类不需要引入
七.继承,访问权限
子类的构造必须调用父类的构造方法
super(参数)来调用父 this(参数)调用自己的构造方法
如果调用super 必须写在子类构造方法第一行
如果不调用 系统默认调用父类的无参数调用方法
private 只有在同一个类
defult (或者不写) 类 包
protect 类 包 子类
public 所有 都可访问
八.super和重写
super 调用父类 同this
如果从父类继承的方法不合适 需要重写
重写时注意一定要方法名参数完全相同 建议复制粘贴
九.object类和tostring方法
object是java 所有所有类的基类(父类)
当定义一个类时 public class cat public class cat extend object
’+‘ 运算符两侧如果有字符串类型 则自动转换为字符串相加符
即所加内容自动调用 tostring方法
如果他是一个引用类型 cat c = new cat
“哈哈”+c == 哈哈 + c.tostring
这个tostring方法定义在object 里被 cat类继承
会输出 类名+ 哈奇码
所以经常会重写这从object 继承的 tostring 方法
**十. 和 equals**
= = 如果比较的是值类型 则于c 一样
如果比较 引用类型 则比较两个引用类型是否指向同一个堆里的对象(比的是内存是否相同即使内容相同也没用看内存)
所以即使内容相同equals 和 == 都无法判断两引用类型是否相等
需要根据需求重写equals方法 有些类已经重写 如 string类 如果两个对象equals 那么他们一定hashcode 相同
所以重写equals 方法一定要重写 hashcode 方法
Object中的equals方法是直接判断this和obj本身的值是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,所谓同一对象就是指内存中同一块存储单元,如果this和obj指向的hi同一块内存对象,则返回true,如果this和obj指向的不是同一块内存,则返回false,注意:即便是内容完全相等的两块不同的内存对象,也返回false。
如果是同一块内存,则object中的equals方法返回true,如果是不同的内存,则返回false
如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equal方法
String类已经重写了object中的equals方法
该笔记是当时借鉴的csdn博主的
————————————————
版权声明:本文为CSDN博主「Rain722」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rain722/article/details/52425285
十一.对象转型
class anmials
{
void run(){
}
}
class dog extends anmials
{ int furcolor
}
父类引用可以指向子类
需要传递父类类型的引用变量时可以传子类 比如需要传 object 那么 java 所有类都可传进去
anmials A = new anmials
A = new dog
但是dog 类的独特的成员变量方法无法被访问Systme.out。print(A。furcolor)错误
相当于A还是anmials 但是 A instanceof dog ture!
dog d = (dog)A
首先 d 等于A 都指向这个狗,强制类型转换后 它可以访问狗的独特
成员变量和方法Systme.out。print(A。furcolor)正确
十二.多态
动态绑定也叫多态也叫chi绑定
动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际类型调用其相应的方法
比如函数需要被传递的参数写成父类(比较宽泛的类);调用他的方法时候他会动态选择实际new出来的变量
public void main mypet enjoy(Anmials)
{
enjoy();
}
mypetenjoy(cat);会输出猫类重写的enjoy方法
必要条件
1 要有继承 2 要有重写 3 父类引用指向子类对象(需要anmials,传个dog)
十三.抽象类
用abstract关键字修饰类,这个类叫做抽象类,修饰方法时这个方法叫抽象方法;
含有抽象方法的类必须类声明为抽象类,抽象类必须被继承,抽象方法必须被重写
抽象类不能被实例化(残缺的)
抽象方法只需要声明即可
十四.final和接口
final 类不能被继承 final 方法不能被重写 final 变量不能被改变赋值
接口
本质上讲接口是一特殊的抽象类,这个类得所有方法都是抽象方法,属性必须定义为public static final(防止多继承父类成员变量出问题)
于继承关系类似,接口于实现类之间存在多态性
多个无关的类可以实现同一个接口
一个类可以实现多个无关的接口
定义java类的语法格式
(modifier)class (name)【extends】[implements]【interface】
public interface runner
{
public (static final)int id = 1;
public void sleep();
public void eat();
}
class stdent implements runner
{
//重写接口的方法
}
接口特性
接口可以多重实现(继承)
接口中声明的属性默认为 public static final 也只能是public static final
接口中只能定义抽象方法 而且这些方法默认未public 的 也只能是public
接口可以继承其他的接口 并添加新的属性和抽象方法
十五.值类型引用类型内存问题
int = 0; i是值类型 内存来说就是
在栈空间分配了一小块空间,这小块空间名字是i,
内存中存的值是0;
***********
* 0 * --> i
***********
String s ;
在栈空间分配一个小格 名叫 s;
- null * ——> s
s = new String(“hellowrold”);
*0x3a123b * ——>s
她存的内容0x3a123b是一个地址
指向堆内存的string 对象 hellowrlod
这个s就是他的引用 其实就是 hellowrold 的指针
十六.字符串在内存中的位置
一、new String都是在堆上创建字符串对象。
当调用 intern() 方法时,
编译器会将字符串添加到常量池中(stringTable维护),
并返回指向该常量的引用。
二、通过字面量赋值创建字符串(如:String str=”twm”)时,
会先在常量池中查找是否存在相同的字符串,若存在,
则将栈中的引用直接指向该字符串;若不存在,则在常量池中生成一个字符串,
再将栈中的引用指向该字符串。
三、常量字符串的“+”操作,
编译阶段直接会合成为一个字符串。
如string str=”JA”+”VA”,
在编译阶段会直接合并成语句String str=”JAVA”,
于是会去常量池中查找是否存在”JAVA”,从而进行创建或引用。
容器
一.Iterator
他就是一个统一的来遍历collection里面所有元素的方法,
划重点 他是一个方法 collection类的子类都可以调用这个方法
因为有arrylist linklist 顺序存储和链式存储两种情况
调用iterator 会返回一个实现了iterator方法ishasnext()next()
end() 的对象 举例:iterator i = c.iterator(); i就是这个对象的引用
通过这个i 可以指向实现了iterator接口内置方法的一个iterator类型对象
然后利用这个对象就可以遍历这个容器;
注意 在删除元素的时候 需要调用i.remove 而不是c.remove;
因为他在遍历的时候锁定了 别的对象都不可以用
二.equals和hashcode
重写equals 方法 必须重写 hashcode 方法
hashcode 方法 当这个类的某个对象 被当做map 接口 的 键 时会使用它的hashcode 因为比较起来更快
三set list
set 中的数据对象没有顺序,且不可以重复
list 中的数据对象有顺序可以重复
四.个人想法
lastname.compareTo(n.lastname);
这时候调用的是 n这个对象的 compareTo方法;
相似举例:
c.remove(“hello”);
这时候调用的是字符串hello 的equals方法
c.remove(new Name(“f1”,“l1”);
这时候调用的是Name这个类的equals方法
所以想要去除这个f1 l1 需要重写的是Name这个类的equals方法
collections.sort(list 1)
要求list内的元素必须实现了comparable接口,
他就是利用了元素自己调用自己的compareTo方法给元素排序的
也体现了这个重点
System.out.println(m1.containsKey(“one”));
System.out.println(m2.containsValue(new Integer(2)));
也是因为 “one”这个string对象已经重写了equals方法
顺带着重写了hashcode方法 这俩实现了map接口
的对象比的就是hashcode
异常
runtime exception 经常发生的 比如数组的越界,不能每写一个数组都要try catch
exception 必须要catch住它的异常 函数会带有throw some exception;
finally 做最后的善后工作
catch 里面对异常处理 可以println e.StackTrace 或者getmessage
多个catch 先抓住小的异常 如果先抓大的 小的也会被抓走
处理不了的时候需要throws some exception 就可以不用 try catch 直接调用该方法
重写方法时 throws 的异常必须相同 大了不行小了也不行 或者就不抛出异常
emmmm今天记录到这里,本人是一名小白中的小白,内容只做个人复习使用。大佬们见笑了,如有幸被垂阅,还望指出其中错误不足!
内容总结
以上是互联网集市为您收集整理的个人java学习的复习笔记 _walkman全部内容,希望文章能够帮你解决个人java学习的复习笔记 _walkman所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。