Java学习笔记-1

一、面向对象是什么?面向对象是一种思想,世间万物都可以看成一个对象,这里只讨论面向对象编程(OOP),java是一个支持并发、基于类和面向对象的计算机编程语言,面向对象开发的优点:1.代码开发模块化,更易维护和修改;2.代码复用性强;3.增强代码的可靠性和灵活性;4.增强代码的可读性。面向对象的四大基本特征:抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不…

大家好,又见面了,我是你们的朋友全栈君。

一、面向对象是什么?
面向对象是一种思想,世间万物都可以看成一个对象,这里只讨论面向对象编程(OOP),java是一个支持并发、基于类和面向对象的计算机编程语言,面向对象开发的优点:
1.代码开发模块化,更易维护和修改;
2.代码复用性强;
3.增强代码的可靠性和灵活性;
4.增强代码的可读性。

面向对象的四大基本特征:

抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。这个抽象模型我们称之为类。对类进行实例化得到对象。

封装:封装可以使类具有独立性和隔离性;保证类的高内聚。只暴露给类外部或者子类必须的属性和操作。类封装的实现依赖类的修饰符(public、protected和private等)。

继承:对现有类的一种复用机制。一个类如果继承现有的类,则这个类将拥有被继承类的所有非私有特性(属性和操作)。这里指的继承包含:类的继承和接口的实现。

多态:多态是在继承的基础上实现的。多态的三个要素:继承、重写、父类引用指向子类对象。父类指向不同的子类对象时,调用相同的方法,呈现不同的行为,就是类的多态特性。多态可以分为编译时多态和运行时多态。

抽象、封装、继承、多态是面向对象的基础。在面向对象四大基础特性之上,我们在做面向对象编程设计时,还需要遵循有一些基本的设计原则。

面向对象的7大原则:

SOLID原则(单一职责原则、开放关闭原则、里氏替换原则、接口隔离原则、依赖倒置原则)
迪米特法则
组合优于继承原则(合成复用原则)

24种设计模式:

创建型模式:
1.简单工厂模式
2.工厂模式
3.抽象工厂模式
4.单例模式
5.原型模式
创建者模式
6.结构型模式:
7.组合模式
8.装饰者模式
9.外观模式
10.适配器模式
11.代理模式
12.享元模式
13.桥接模式
行为型模式:
14.观察者模式
15.策略模式
16.状态模式
17.中介模式
18.模板方法
19.命令模式
20.备忘录模式
21.访问者模式
22.解释器模式
23.迭代器模式
24.职责链模式

二、请写出下面几个表达式的结果,答案可以用十进制或十六进制书写
1). 0xaa | 0x55
2). 15 & 240
3). 10 ^ 12
4). -2 >> 1
5). -2 >>> 1

1). 分析:十六进制数用0x……来表示,后面一个十六进制位是四位,两个十六进制位为一个字节,最多后面可以有8个十六进制位,32个字节,如:0xFFFFFFFF。 或(“ | ”)运算,全0为0,其他为1。
因此,0xaa转化成二进制为1010 1010, 0x55转化为二进制为0101 0101,|的意思是按位或,即相同位的值至少有1个是1,结果对应的位就是1, 因此求得的结果为:0000 0000, 转化为十进制为0

2)分析:10进制转换成2进制,用该数字除以2,记录商和余数,利用商再次除以2,记录商和余数……直到上为0或余数为0停止,余数逆序组成二进制的从低到高位(最后的余数为二进制最低位)。与(“ & ”)运算,全1为1,其他为0 。
因此,15转化为二进制为0000 1111, 240转化为二进制为1111 0000, 运算结果得到的是0

3). 分析: 亦或(“ ^ ”)运算,相同取0,不同取1 。
10的二进制数为0000 1010, 12的二进制数为0000 1100, 运算结果得到的是6

4). 分析: 带符号右移(“ >> ”),即有符号位时,负数符号位补1,正数符号位补0, -2 的二进制求法是正数取反加1,因此 2 的二进制表示为0000 0000 0000 0000 0000 0000 0000 0010 ,取反加一为
1111 1111 1111 1111 1111 1111 1111 1110 ,即 -2 的二进制表示。
注: >> , << , >>> , 运算符只针对int型和long型,byte ,short ,char型需要转换成Int型在进行操作。
所以: 带符号右移之后为 1111 1111 1111 1111 1111 1111 1111 1111 ,除符号位之外,减一取反,得到带符号十进 制数为 -1 。

5). 分析:无符号右移 (“ >>> ”) ,即无论正负数,右移之后符号位均补 0 。
所以: -2 的二进制无符号右移一位之后为 0111 1111 1111 1111 1111 1111 1111 1111,即 2^31 – 1,二的三十一次方减一。
注:右移和无符号右移主要区别就在于左面最高位补 0 还是补 1 的问题,无符号右移任何时候最高位都补 0 , 有符号右移则是正数补 0 ,负数补 1 。(没有无符号左移!)。

三、&和&&的区别:
&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(“”),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

四、什么是值传递和引用传递?

值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递是指在调用函数时将实际参数的地址,传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
一般认为java内的传递都是值传递,java中实例对象的传递是引用传递。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126498.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • sql 创建表_sql server建表语句

    sql 创建表_sql server建表语句SQLite创建表创表语法CREATETABLE[表名称]( –主键列不可为空[列1][类型]PRIMARYKEYNOTNULL,–列可为空[列2][类型],–列不可为空[列3][类型]NOTNULL);创表示例CREATETABLEUser( IdINTPRIMARYKEYNOTNULL, NameText, SexINTNOTNULL)在线Sqlite查看器|修改器http://

    2022年10月25日
  • rpa文件解包_py封装exe

    rpa文件解包_py封装exe用cxfreeze打包py文件为exe文件全过程:必须全部看完,正确在后面注意:当前环境是Play_Craw,pipinstallcx-freeze时自然安装到了C:\Users\xiaosalang\Anaconda3\envs\Play_Craw\Scripts处检验是否安装成功:cxfreeze-h将路径切换到.py文件处:如桌面文件cx1.py内容是:whil…

  • 实用的开源百度云分享爬虫项目yunshare – 安装篇[通俗易懂]

    实用的开源百度云分享爬虫项目yunshare – 安装篇

  • 移动端mobiscroll时间控件的使用

    移动端mobiscroll时间控件的使用相关js代码:$(function(){ varcurrYear=(newDate()).getFullYear(); varopt={}; opt.date={preset:’date’}; opt.datetime={pres

  • Macromedia flash制作落叶飘下动画

    Macromedia flash制作落叶飘下动画flash制作落叶动画打开MacromediaFlash软件,新建一个flash文档将所需所有素材导入到库中设置背景并将拖入到舞台的图片转换为图片元件设置落叶图层为图层2添加引导层,自定义枫叶下落路线轨迹。打开MacromediaFlash软件,新建一个flash文档将所需所有素材导入到库中使用“文件-导入-导入到库”命令将所有素材导入到库中。导入结果如下图设置背景并将拖入到舞台的图片转换为图片元件将库中的图片拖入到舞台中间,自动创建图层1,选中左侧工具栏中的“任意变形工具”,拖动过

  • Linux重启网卡失败_centos7重启后网卡不启动

    Linux重启网卡失败_centos7重启后网卡不启动重启网卡报错:Restartingnetwork(viasystemctl):Jobfornetwork.servicefailedbecausethecontrolprocessexitedwitherrorcode.本人解决办法:去windows里面查找一下关于网卡的服务是否打开如果没有则手动开启这两个服务。有可能是UUID冲突,这里j简单介绍一…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号