你真的了解java吗?java总结二

java冷知识:jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好的jvm(s),整合成一个统一的openjdk。

一、运算符

1.连接符

"+"符号:如果能计算就计算,不能计算就连接。

int i = 1;

"a" + i        //结果返回"ai"字符串

'a' + i         //结果返回98,因为这里的a是字符,字符在运算时是转换成ASCII值进行计算的

1 + i          //结果返回2

1 + "" + i   //结果返回"11",1+""后会转换成字符串类型,字符串+i还是字符串类型

1 + i + ""   //结果返回"2",1+i=2,2与字符串连接转换成字符串型

2.自增自减运算符

int a = 5;

a++  操作之后

a == 6 这是最基础的用法这里就不多赘述了

面试题

int a = 5;

int b = 5;

int c = ++a + b-- + ++b + a-- + --b - ++a - a--;

a、b、c的结果分别是多少?(手算 )

a == 5, b == 4, c == 14。

3.赋值运算符

最简单常用的赋值运算符就是 =,就像int a = 5,将5赋值给a。

扩展赋值运算符 +=、 -=、 *=、 /=。

扩展赋值运算符也是我们比较常用的,但是需要注意一点,扩展赋值运算符包含了强制类型的转换。

 在之前我们讲过,在表达式中,表达式结果会返回表达式中出现范围最大的类型。

因此:

        byte a = 1;

        byte b = 2;

        a =a + b;        //这里是会报错的,byte类型会自动转换成int类型

        a +=b;            //这里不会报错,a += b等价于a = (byte)(a + b),会自动进行类型转换 

4.逻辑运算符

&       与运算符        条件中有一个为假,返回结果为假

|        或运算符        条件中有一个为真,返回结果为真

!        非运算符        真变假,假变真

^        异或运算符    条件相同为假,否则为真

&&     短路与            结果与&相同,左边为false则右边不执行

||        短路或            结果与|相同,左边为true则右边不执行

二、面向对象——对象来喽

1.设计对象

首先想一下,类是什么?以及类和对象的关系是什么?

类:是对象共同特征的描述

对象:是真实存在的具体事事例

所以:在java中,必须先设计类,才能创建对象并使用

2.对象规范

1.类名首字母大学,满足驼峰规则,不能使用关键字,必须是合法标识符,而且有意义。

2.一个java文件中可以有多个class类,但是只有一个可以用public修饰,而且被修饰的类必须是代码文件名。

3.成员变量一般会有默认值

byte、short、int、long0
double0.0
booleanfalse
Stringnull

3.对象的内存机制

学过jvm的同学应该知道,在jvm中有方法区,栈,堆。

那对象是如何执行的呢?

当我们想要执行一个类的时候,首先会将该类加载方法区中。里面包含了类的方法和变量等信息。

需要执行方法时,会将该方法生成栈帧压入栈中。当我们声明对象时,会在栈中开辟一部分区域,才存放对象地址。

当我们需要调用new方法去创建类的时候,会在堆内存中分配一定空间去存储该对象,对象中存有成员变量和方法。成员变量是默认值,但是为了节省空间,方法采用的引用地址,去指向方法区中的方法。

栈中声明的对象,存的便是堆中开辟的地址。

4.数据的封装

1.封装是什么?

告诉我们,如何正确设计对象属性和方法

封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。

2.封装思想的好处?

让编程变得简单,降低学习成本。

3.如何体现封装性?

举例:

现在有两个类,一个是人,另一个是门。开门这个方法应该设计在人还是门的类里呢?

应该设计在门的类里,有些人可能会想,不是人主动开的门吗?为什么开门的方法会设计在门的类里?

我们可以这么理解,门有两个属性,一个是开,另一个是关。人开门走后,对人并没有影响,但是却改变了门的状态。

4.如何更好的封装?

一般会把成员变量用private隐藏起来,提供public修饰的get、set方法暴露其取值赋值。

5.标准的javaBean

1)成员变量private修饰

2)set、get方法public修饰

3)提供无参构造器

6.成员变量和局部变量的区别

区别成员变量局部变量
类中的位置不同类中,方法外常见于方法中
初始化值不同有默认值,无序初始化需要初始化,使用前需要赋值
内存的位置不同堆内存栈内存
声明周期不同与对象的声明周期相同与方法的声明周期相同
作用域方法内

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗头实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值