java学习总结(1)

JAVA的语言特点

简单性:Java语言的语法是基于C++的,但去除了C++中一些复杂和难以理解的概念,如指针、多重继承等,因此Java语言相对比较简单,易于学习和使用。

面向对象:Java语言是完全面向对象的编程语言,它将一切事物都看作对象,通过类和对象来描述现实世界中的事物。面向对象的编程思想可以提高程序的复用性、可维护性和可扩展性。

跨平台性:Java语言通过Java虚拟机(JVM)实现了跨平台性。Java程序经过编译后会生成字节码,JVM会根据不同的操作系统将字节码转换成机器码,因此Java程序可以在任何支持JVM的操作系统上运行。

安全性:Java语言在设计之初就考虑了安全性,它提供了一系列安全机制来防止恶意代码的攻击。例如,Java语言没有指针,因此无法直接访问内存,从而降低了安全风险。

可移植性:Java程序经过编译后会生成字节码,字节码是独立于平台的,因此Java程序可以很容易地移植到其他平台上。

高性能:Java语言采用了编译和解释相结合的模式,在执行效率方面兼顾了效率和灵活性。

多线程:Java语言支持多线程,可以实现多个任务并发执行,提高程序的执行效率。

基本数据类型和引用数据类型的区别

一、.存储上的区别

1.基本数据类型是存放在栈中的简单数据段。

2.引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,通过这个地址可以快速查找到对象。

二、比较上的区别

1.基本数据类型的比较是值的比较

var a = '{}'

var b = '{}'

console.log(a == b) //true

直接比较值,看起来一样那么他就是一样的。

2.引用类型的比较是引用的比较

var a = {}

var b = {}

console.log(a == b) //false

问:看起来明明一样为什么会是false?

答:因为引用类型比较的是地址,也就是比较两个对象保存在栈区的指向堆内存的地址是否相同,虽然看起来一样,但是他们指向堆内存的地址是不一样的,所以两个对象不相等。

三、赋值上的区别

1.基本数据类型的赋值是简单赋值,如果一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把这个值复制到为新变量分配的位置上。

var a = 10

var b = a

a++

console.log(a) //11

console.log(b) //10

a在内存中保存的值是10,当使用a的值来初始化b时,b中也保存了10,这两个值是完全独立的,相当于b把a的值复制了一份,所以两个变量的任何操作都不会互相影响。

2.引用类型的赋值是对象引用

var a = {}

var b = a

a.name = "haha"

console.log(a.name) //haha

console.log(b.name) //haha

b.age = 29

console.log(a.age) //29

console.log(b.age) //29

当一个变量向另一个变量赋值引用类型的值时,同样也会将栈内存中的值复制一份放到新变量分配的空间中,但是引用类型保存在栈内存中的变量是一个地址,这个地址指向的是堆内存中的对象,所以这个变量其实复制了一个地址,两个地址指向同一个对象,改变其中任何一个变量都会互相影响。

Java的运算符

1. 算术运算符

算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)

2. 自增(++)、自减(- -)运算符

++ 或 - - 是单目运算符,放在操作数的前面或后面都是允许的。

++运算,变量自增长1;- -运算,变量自减少1。

那么如果有一个变量i,++i和i++有什么区别呢?

独立运算时:i++和++i没有区别,都是实现自动加1的功能

混合运算时:i++和++i就不同了

++ 或 - - 是单目运算符,放在操作数的前面或后面都是允许的。

++运算,变量自增长1;- -运算,变量自减少1。

那么如果有一个变量i,++i和i++有什么区别呢?

独立运算时:i++和++i没有区别,都是实现自动加1的功能

混合运算时:i++和++i就不同了

3.赋值运算符

赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“=”,例如 int a=2.
它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。

记住在Java中两个数相等用的符号是==,而=是赋值运算符。
例如 int a=1,int b=1,如果表示a等于b,则是a==b

赋值运算符可以和算数运算符组成复合赋值运算:

等于号:=(用于给变量赋值)
加等于:+=
减等于:-=
乘等于:*=
除等于:/=
取模等于:%=


4.关系运算符

关系运算符用来比较两个值的关系。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。

  • 相等:==(如果判断正确结果为true)
  • 小于号:<
  • 大于号:>
  • 小于等于:<=
  • 大于等于:>=
  • 不等于:!=

5.逻辑运算符

逻辑运算符分为:

短路逻辑运算符
逻辑运算符
短路逻辑运算符 与 逻辑运算符 的区别是:

逻辑运算符:先走一遍,在判断
短路逻辑运算符:一但符合条件,后面的判断不走
注意:短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。

1. 逻辑运算符

逻辑运算符:&、|、^、!

2. 短路逻辑运算符

短路逻辑运算符:&&、||

  • 双与:&&(全真才是真)
  • 单与:&(全真才是真)
  • 双或:||(全假才是假)
  • 单或:|(全假才是假)
  • 取反:!

6.三元运算符

该运算符由三个操作数组成,用于判断布尔表达式。它的目的是确定应将哪个值分配给变量。条件运算符的语法为:

变量 = (布尔表达式) ? 值1 : 值2

7.instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

instanceof运算符使用格式如下:

( Object reference variable ) instanceof  (class/interface type)

如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

下面是一个例子:

String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

橙橙橙留香

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

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

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

打赏作者

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

抵扣说明:

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

余额充值