
Java千问
文章平均质量分 77
穆哥讲Java
穆哥,一个有十年以上开发经验的Java工程师,之后投身软件开发培训行业,现任北京信息科技大学外聘高级讲师,想学Java开发就来找我吧!Java编程学习QQ群291839907
展开
-
《Java千问》系列短文写作计划
大家好,我在优快云开博客啦!我本人从事软件开发和教学多年,在我从事教学过程中,回答过很多学生的问题,但非常遗憾,我只是当场回答了这些问题,但事后并没有把这些问题的解答写成博客。我打算弥补一下这个缺憾,因此产生了写文章解答问题的想法。经过几天酝酿,我打算把这些文章写成系列短文,名字就叫《Java千问系列》。取这个名字并不是说真的有一千个问题,“千”只是表示多的意思。只要我有把握回答的,都发表出来。关于《Java千问系列》的文章,在这里我想做几点说明原创 2019-12-16 11:10:43 · 406 阅读 · 3 评论 -
Java千问:关于Java类的构造方法,看这一篇就够了
Java语言中,类的构造方法是一种很特殊的方法。关于构造方法要记忆和理解的知识点其实挺多的,下面我们就来详细的讲讲构造方法,相信看过这篇文章之后,你会对构造方法有一个比较深刻的认识和理解。(预警:此文较长,请耐心看完!首先来说说构造方法的五个特点:一、构造方法的名称必须与类的名称相同。比如类的名称叫A,那么它的构造方法必须也叫A。二、构造方法的前面不能声明返回值类型,即便是void也不行。只有满足了这两个条件,编译器才会认定这个方法是构造方法。原创 2023-01-22 18:33:49 · 2112 阅读 · 1 评论 -
一文读懂Java语言方法的重写(覆盖、Override)
很多初学Java语言的小伙伴,在学到“面向对象”这块内容的时候,都会学到的一个概念,那就是“方法的重写”。重写又叫覆盖,英文名为“Override”。虽然”重写”、 ”覆盖”、“Override”这些名词都很容易记住,但很多人并没有真正理解Java语言为什么要提供“重写”这种编程机制,也不知道什么时候该重写父类中的方法,下面我们通过一篇文章来全面学习一下“方法的重写”。假设有一个类叫做Father,并且我们假设因为某种原因,我们只能使用这个类,但没有办法修改这个类的源代码。原创 2020-12-23 15:38:35 · 2722 阅读 · 1 评论 -
Java语言this关键字用法全面总结
学习Java编程的时候,无论是谁,当学到面向对象这部分内容时都会遇到一个关键字:this。很多初学者对这个关键字的都会感觉到理解不透,不明白这个神秘的”this”到底表示什么意思。按照官方正规的解释,this关键字的意义被解释为“指向当前对象的引用”。这个解释非常准确并且很精炼,但它太过学术化了,导致很多初学者有点读不懂,更谈不上深入理解它的意义。本文将用大白话的形式帮助初学Java的小伙伴来深入...原创 2020-03-30 14:43:09 · 19951 阅读 · 10 评论 -
正确理解Java方法的返回值
方法声明的返回值类型是double,而实际通过return关键字返回的却是一个int型的值,但并没有引起编译错误。而在代码②当中,情况正好相反,方法声明的返回值类型是int,方法内部的return关键字实际返回了一个double类型的值,在这种情况下...原创 2020-03-23 12:45:56 · 6538 阅读 · 2 评论 -
一个Java增强型for循环的易犯错误,你注意到了吗?
我们知道,在Java语言中有三种循环,分别是while循环,do…while循环和for循环。其实,从JDK1.5开始,又引入了一种增强型for循环,这种新型的for循环主要是用来遍历数组或集合的,它的格式非常简单,下图展示了增强型for循环的基本结构:增强型for循环被设计出来就是为了遍历数组或者是集合的,所以在循环中都会指定一个数组或者是集合。为了方便程序员编码,增强型for循环不再通...原创 2020-03-07 17:49:52 · 2024 阅读 · 4 评论 -
Java千问:Java位运算经典应用(四)
七、判断某数是不是2的N次幂我们知道,10的0次幂是1,1次幂是10,2次幂是100...仔细观察一下这些数,你就会发现一个规律,那就是:这些数字当中,开头是1,后面N位上的数字全部是0。这是我们用十进制表示数字所得到的一个规律。同理,如果用二进制表示数字的话,那么对于2的N次幂也有相同的规律。用二进制表示2的0次幂为1,2的1次幂为10,2的2次幂为100...规律很明显,也1开头...原创 2020-03-02 10:23:47 · 438 阅读 · 1 评论 -
Java千问:Java位运算经典应用(三)
在很多场合下,都需要给字符串进行加密,使字符串由”明文”变成”密文”。对字符串加密有很多种算法,其实我们利用位运算也可以实现简单的加密效果。用位运算实现加密的原理很简单,这里为大家讲解一下。假设有两个整数a和b ,a^b的结果为c。我们可以认为a就是原始数据,a与b进行异或运算所得到的c就是加密后的数据,b在加密过程中扮演着”密钥”的角色。在不知道b值的情况下,如果只是...原创 2020-02-26 16:11:03 · 324 阅读 · 0 评论 -
Java千问:Java位运算经典应用(二)
实现交换变量值的关键点就在于中间变量c。而现在的题目要求是不借助中间变量来交换a和b的值。如果不使用位运算的方式,同样可以做到不借助中间变量交换两个变量的值,其实现过程如下原创 2020-02-17 15:49:06 · 333 阅读 · 1 评论 -
Java千问:Java位运算经典应用(一)
很多人认为位运算在实际开发过程中并没什么用,学习位运算也只是为了应付面试。这种想法是错误的,接下来我们就通过几篇连载文章介绍一下位运算在实际开发过程中的几个经典应用实例。如果对位运算规则掌握还不是很熟练,可以先阅读《Java千问:Java语言位运算符详解》。这篇文章不仅详细讲解了Java位运算的基本规则和一些常用的运算定律,同时还在文中提到了一些常用的位运算实际应用,比如可以用位运算操作的方式快速...原创 2020-02-16 15:42:09 · 522 阅读 · 1 评论 -
Java千问:Java语言位运算符详解
很多编程语言都有位运算符,Java语言也不例外。在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符。在讲解这些运算符的使用之前,必须了解一个常识,那就是:位运算符是对long、int、...原创 2020-02-14 11:32:42 · 5298 阅读 · 1 评论 -
Java千问:各种数制及数制间转换算法详解
我们在生活中用到数字,都是以十进制的方式计数的。稍有计算机常识的人都知道,计算机中是以二进制的方式计数的,另外在计算机中表示颜色经常会用到十六进制的数字,此外在其他一些领域还会用到八进制的数字。那么二进制、八进制、十进制、十六进制的数字,究竟是怎样计数的?它们之间是怎样相互换算的?本文就来详细说说这两个问题。一、多种进制的计数方法首先来说我们最熟悉的十进制。十进制计数法有10个原始的数字,...原创 2020-01-22 18:26:53 · 864 阅读 · 3 评论 -
Java千问:学透Java自增(++)自减(--)运算符,看这一篇就够了!
同很多高级编程语言一样,Java语言的运算符系统当中也有自增(++)和自减(--)这两个运算符。很多小伙伴对这两个运算符都深感头疼,并且很多公司在面试的时候也经常会问到与之相关的问题,今天我们就通过一篇文章来深度解析一下这两个运算符,相信在看过这篇文章之后,你再也不会被自增(++)和自减(--)运算符难住。由于自增和自减运算符的原理完全相同,所以我们在讲解的时候仅以自增运算符举例。(预警:本文举例...原创 2020-01-19 13:36:18 · 5159 阅读 · 14 评论 -
Java千问:Java循环语句的几个冷门知识点你都知道吗?
我们在进行Java开发的时候,经常会用到循环结构,但是有几个关于循环的“冷门”知识点,不知道你是不是都已经掌握了呢?我们一起来看看一、大括号可以不写吗? 我们都知道,如果每次循环过程中要执行的语句只有一条,那么就可以不用写大括号。但事实真的如此吗?请看下面的代码:大家可以看到,在循环中只有一条语句,但是并不能通过语法编译。这是为什么呢?因为Java语言规定:循环语句中重复执行...原创 2020-01-12 14:31:04 · 628 阅读 · 1 评论 -
Java千问:七个问题帮助初学者深入理解Java数组
几乎所有的高级语言当中,都提供了一种叫做”数组”的东西,Java语言当然也不例外。我们通过数组可以很方便的存储和管理一组数据。因为在Java语言当中使用数组非常的方便,所以导致很多初学者忽略了对数组的深入学习,本文就通过七个问题,来帮助初学者深入理解一下Java语言的数组到底是怎么回事。一、数组是变量的简单叠加吗?我们在学习Java的时候,知道一个int类型的变量可以存储一个整数,而一个i...原创 2020-01-09 10:58:35 · 733 阅读 · 1 评论 -
Java千问:instanceof运算符用法详解
Java语言当中提供了一个叫做instanceof的运算符。很多教科书上对这个运算符的介绍并不详细,只是简单的说这个运算符是用来判断某个对象是不是属于某种类型。我们现在就用一篇短文介绍一下instanceof的运算符的作用和注意事项。请看下面的代码片段代码中定义了一个接口和两个类。大家记清楚它们之间的关系:Person类实现了Moveable接口,Student类继承了Person类。紧接...原创 2020-01-08 10:48:29 · 2697 阅读 · 1 评论 -
Java千问:你知道Java语言布尔型数据到底占多大空间吗?
我们都知道,Java语言中有个boolean类型。每个boolean类型的变量中存储的是一个true或者是false的逻辑值。那么存储这个逻辑值,需要多大的空间呢?从理论上来讲,存储这个逻辑值只需要1个位(bit)就可以了,很多教科书上谈到这个问题的时候,也说boolean类型的数据在内存中只占1个位。但是稍微有点计算机常识的人都知道:计算机完成寻址操作的时候,是以字节为最小单位进行的。也就是...原创 2020-01-06 16:25:55 · 1599 阅读 · 2 评论 -
Java千问:你真的掌握了Java语言的“==“运算符吗?我看未必!
很多程序设计语言都使用”==”来判断两个数据是否相等,我们在编程中也经常使用这个运算符,以至于对它已经熟视无睹。那么是不是任意两个数据都可以使用”==”来判断相等呢?”==”比较的到底是什么?我们今天就通过一篇短文来聊聊这个不起眼的”==”运算符。一、基础数据类型之间的比较首先我们来看一段代码这段代码当中,声明了8个基础类型的变量,这8个变量当中, boolean类型的变量flag...原创 2020-01-02 11:45:51 · 1061 阅读 · 2 评论 -
Java千问:关于Java语言复合赋值运算符的两个问题,快来瞧瞧!
我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符。复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值。比如说:上面的这两条语句相当于但是,如果碰到下面这样的情况,a的值该应该是多少呢?有人认为应该按以下方式来计算,因为我们都知道,在四则运算规则中,遵循“先乘除,后加减”的原则按照这样的方式来计算,得...原创 2019-12-30 14:25:01 · 418 阅读 · 1 评论 -
Java千问:你真的会用Java的int型变量吗?有些坑你真的不知道
我们在进行Java编程的时候,使用最频繁的数据类型基本上就是int型了。平时在使用这种数据类型的过程中,我们似乎也并没有感觉到有什么太多需要注意的地方,其实int类型的变量在使用过程中也会有一些隐藏很深的坑,我们通过一篇短文来了解一下。首先我们先来明确一下Java虚拟机在对int型数据进行处理时默认的两条规则1. 当程序出现“整型常量”的时候,默认都是以int型存储的2. 如果算术表达...原创 2019-12-27 15:16:46 · 440 阅读 · 2 评论 -
Java千问:Java语言中最大的整数再加1等于多少?
已知Java语言中int类型所能表示的最大整数为2147483647,请问以下代码执行结果是什么?一部分人都会认为这段程序压根就无法通过编译,也有人认为,这段程序能够通过编译,但在运行时会抛出异常,但更多的人面对这道题目根本就无从下手。那么正确答案是什么呢?首先告诉大家,这段程序能够顺利通过编译,并且在运行时也不会出现异常,运行的结果是在控制台上输出了数字-2147483648!而-214...原创 2019-12-25 10:20:50 · 1818 阅读 · 1 评论 -
Java千问:Java语言中为byte和short类型变量赋值为啥会报错?
大家可以看到,在上面的程序中,我们给int类型变量i1赋值时,“=”右边也是一个算术表达式,并且表达式中也有变量,但不会出现语法错误。而给i2进行赋值时,“=”右边的值已经超过了int类型的范围,也不会有问题。原创 2019-12-23 11:23:00 · 1850 阅读 · 1 评论 -
Java千问:Java语言各种数字的“非常规”写法你都会吗?
Java程序中总是会出现一些数字。我们通常都是用常规的方式来表示这些数字,如以下代码所示int a = 1;double b = 1.5;但是数字也可以有非常规写法,在这里我们用一篇短文简单总结一下整数的非十进制写法首先强调一下,这里所说的整数并不是单指int类型,而是包含了int、byte、short和long这4种整数类型。在Java语言中,除了可以用十进制的形式表示整数...原创 2019-12-20 14:38:43 · 1169 阅读 · 1 评论 -
Java千问:Java语言如何给main方法传递参数?
大家都知道,Java语言运行程序的入口方法叫做main,这个方法有一个参数,这就表示说,我们要运行主方法,就必须给main方法传递一个参数。但是,大家似乎对这个参数向来都是视而不见,从来都没给主方法传递过参数。main作为Java程序运行的第一个方法,我们应该从哪里给这个方法传递参数呢?今天我们就用一篇短文来聊聊这个话题。如何给main方法传递参数大家请看下面这段代码这是一段谁都能...原创 2019-12-19 14:59:55 · 3433 阅读 · 2 评论 -
Java千问:源文件名称必须与类名相同吗?
我们在初学Java语言的时候,老师给我们讲的第一个例子往往是用记事本编写打印“Hello World”的程序。当写完程序后,老师一般都会要求我们把源文件的名称命名为与类名相同,比如,类的名称叫A,那么源文件的名称也叫A。很多同学按老师的要求做了,也成功的运行出了“Hello World”。没按老师要求做的,可能连编译都无法成功。于是很多初学者都认为,Java程序的源文件名必须与类名相同,...原创 2019-12-17 12:23:23 · 8429 阅读 · 3 评论 -
Java千问:开发Java程序为什么要配置环境变量?
我们在学习搭建Java开发环境的时候,老师总是让我们先安装JDK,紧接着又让我们去配置环境变量,之后才能动手编写Java程序。很多同学按照老师的步骤去做,成功的搭建好了Java开发环境,并且运行出了自己的第一个Java程序,感到非常有成就感。 那么,为什么在安装了JDK之后要配置环境变量呢?很多同学对这个问题其实并不清楚,只是知道如果不配置环境变量,就没法进行...原创 2019-12-16 14:29:10 · 2920 阅读 · 1 评论