网站首页 > java教程 正文
java是一门面对对象的编程语言,这是一种很惟妙的编程思维,世界万物都可以抽象成类,而我们只需创建这些类的对象就可使用这些类。接下来我与大家分享一些java编程的知识点吧。
一丶方法调用类的别名问题
class Letter{Char c;}public class PassObject{static void f(Letter y){y.c = 'z';}public static void main(String[] args) { Letter x = 'a';x.c = 'a';System.out.println("1.x的c值为:"+x.c);f(x);System.out.println("2.x的c值为:"+x.c);}}
这段代码的运行结果为:
x.c:a
x.c:z
方法f()似乎要在他的作用域内复制其参数Letter y的一个副本;但实际上只是传递了一个引用。所以 y.c=‘z’:实际改变的是f()之外的对象。
二丶关系操作符
关系操作符生成的是boolean (布尔)结果,它们计算的是操作数的值之间的关系。如果关系是真实的关系表达式会生成true(真);如果关系不真实,则生成false(假)。关系操作符包括小于(<),大于(>),小于或等于(<=),大于或等于(>=),等于(==)以及不等于(!=)。等于和不等于适用于所有的基本数据类型,而其他比较符不适用boolean类型。因为boolean值只能true或false,“大于”和“小于没有实际意义。
测试对象的等价性
关系操作符==和!=也适用于所有对象,但这两个操作符通常会使第次接触Java的程序员感到述惑。下面是一个例子:
Public class Equivalence{ public static void main(String[] args) { Integer n1 = new Integer(47);Integer n2 = new Integer(47);System.out.println(n1==n2);System.out.println(n1!=n2);}
语句System.out.println(n1 == n2)将打印出括号内的比较式的布尔值结果,大家可能认为输出结果肯定先是true,再是false, 因为两个Integer对象都是相同的。但是尽管对象的内容相同,然而对象的引用却是不同的,而 == 和 != 比较的就是对象的引用。所以输出结果实际上先是false,再是true。
如果想比较两个对象的实际内容是否相同,又该如何操作呢?此时,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”,基本类型直接使用==和!=即可。
下面举列说明如何使用:
public class EqualsMethod{public static void main(String[] args){Integer n1 = new Integer(47);Integer n2 = new Integer(47);System.out.println(nq.equals(n2));}}
输出结果为:true,结果与我们预想的一样。但事情并不总是这么简单,因为equals()的默认行为是比较引用,所以当我们比较自己新建的类中如果要使用equals()就必须覆盖equals()方法。负责不会出现我们想要得到的结果
好了,今天的java知识点分享到此结束,接下来我为大家准备了一道有趣的算法题,感兴趣的同学可以了解一下哦。
算法题:删除排序数组的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用0(1)额外空间的条件下完成。
示例1:
示例2:
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
解决方案
方法:双指针法
算法:
数组完成排序后,我们可以放置两个指针i和j,其中i是慢指针,而j是快指针。只要nums[i] =nums[j],我们就增加j以跳过重复项。
当我们遇到nums[j] != nums[i]时,跳过重复项的运行已经结束,因此我们必须把它(nums[j])的值复制到nums[i+1]。然后递增i,接着我们将再次重复相同的过程,直到j到达数组的末尾为止。
来源网络,侵权删除
猜你喜欢
- 2024-10-07 Java基本知识点概念(java基本知识点概念图片)
- 2024-10-07 Java知识点(含PDF)(java必学知识点)
- 2024-10-07 java基础知识点(java基础知识点面试题)
- 2024-10-07 2022最新Java核心知识点汇总,从入门到精通一步到位
- 2024-10-07 纯干货:Java学习过程中的21个知识点和技术点
- 2024-10-07 Java基础(java基础案例教程第二版答案)
- 2024-10-07 Java基础知识点有哪些 如何快速步入Java行业
- 2024-10-07 java核心知识点最全整理(java核心知识pdf)
- 2024-10-07 初学者怎么学Java编程 Java哪些知识点最重要
- 2024-10-07 Java基础知识点我替你总结了,这么好的事情怎么能错过?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)