注:拓展的赋值运算符隐含了强制类型转换
注:& |,无论左边true false,右边都要执行
这两种情况下,右边不执行,提高了效率
//键盘录入两个整数,如果其中一个为6,最终结果输出true.如果它们的和为6的倍数,最终结果输出true.其它结果为false.
格式:关系表达式?表达式1:表达式2;
注:三元表达式的结果必须被使用,否则
范例:求两个数的较大值
//比较两只老虎的体重
原码(是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1
注:如果对一个布尔类型的变量进行判断,不要用==号,直接把变量写在小括号即可
格式:if(关系表达式){
格式:if(关系表达式){
注:表达式:(将要匹配的值)取值为byte、short、int、char
for(初始化语句;条件判断语句;条件控制语句){
for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问了;知道循环的次数和范围
while循环中,控制循环的变量,因为while循环来说不归属其语法结构中,在while循环结束后,其变量还可以继续被访问;只知道循环的结束条件
注:无限循环的下面不能写其它代码,因为循环不止
点击修复IDE,跟随右下角提示进行操作
关闭IDEA进程再打开
练习(循环):求平方根
练习(循环):质数判断
类:Random,可以生成一个随机数
注:在小括号中,书写的是生成随机数的范围
口诀:包头不包尾,包左不包右
数组:是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换考虑
建议:容器的类型,和存储的类型保持一致
初始化:在内存中,为数组容器开辟空间,并将数据存入容器的过程
[:表示当前是一个数组
@:表示一个间隔符号(固定格式)
6d03e736:数组真正地址值(十六进制)
索引的特点:从0开始,逐个+1增长,连续不间断
//结束条件:数组的长度-1(最大索引) //idea提供:数组名.fori,自动的快速生成数组的遍历方式
练习(数组):求和
练习(数组):变化数据
注:一个循环只做一个事情
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[ ]数组名=new 数据类型[数组长度];
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值‘/u0000’空格
布尔类型:默认初始化值false
引用数据类型:默认初始化值null
动态初始化:手动指定数组长度,由系统给出默认初始值
*只明确元素个数,不明确具体数值,推荐使用动态初始化
例 :使用数组容器来存储键盘录入的5个整数
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
*需求中已经明确了要操作的具体数据,直接静态初始化即可
例:将全班的学生成绩存入数组中11,22,33
数组常见问题:当访问了数组中不存在的索引,就会引发索引越界异常
*栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
*堆:存储对象或者数组,new来创建的,都存储在堆内存,并产生地址值
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关
方法是程序中最小的执行单元
重复的代码、具有独立功能的代码可以抽取到方法中
方法可以提高代码的复用性和可维护性
方法定义:把一些代码打包在一起的过程
方法名();//调用方法方法调用:方法定义后并不是直接运行的,需要手动调用才能执行
形参(形式参数): 方法定义中的参数
实参(实际参数):方法调用中的参数
方法与方法之间是平级关系,不能互相嵌套
方法的编写顺序和执行顺序无关
方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。
如果要编写return,后面不能跟具体的数据,return语句下面永远执行不到
方法没有返回值:可以省略不写。如果书写,表示结束方法
方法有返回值:必须要写。表示结束方法和返回结果
同一个类中,方法名相同,参数不同(个数不同、类型不同、顺序不同)的方法,构成重载关系,且与返回值无关
引用:使用了其他空间中的数据
基本数据类型:数据值是存储在自己空间中,赋值给其他变量,赋的真实值
引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值,赋值给其他变量,赋的地址值
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值
又称陷阱数,类具有奇特转换特性,任何数字不全相同的整数,经有限重排求差操作,总会得某或些数,这些数即黑洞数重排求差操作即把组成该数数字重排得大数减去重排得小数。
原是中的概念,表示这样一种天体:它的是如此之强,就连光也不能逃脱出来。数学中借用这个词,指的是某种运算,这种运算一般限定从某些整数出发,反复迭代后结果必然落入一个点或若干点的情况叫数字黑洞。
数学中的就跟英语中的ABC一样平凡和简单。然而,按以下,就可以观察到这个最简单的数字。
设定一个任意数字串,数出这个数中的个数,个数,及这个数中所包含的所有位数的总数,
1.偶:数出该数数字中的偶数个数,在本例中为2,4,6,8,0,总共有 5 个。
2.奇:数出该数数字中的奇数个数,在本例中为1,3,5,7,9,总共有 5 个。
3.总:数出该数数字的总个数,本例中为 10 个。
4.新数:将答案按 “偶-奇-总” 的位序,排出得到新数为:5510。
5.重复:将新数5510按以上算法重复运算,可得到新数:134。
6.重复:将新数134按以上算法重复运算,可得到新数:123。
结论:对数,按上述算法,最后必得出123的结果,我们可以用计算机写出程序,测试出对任意一个数经有限次重复后都会是123。换言之,任何数的最终结果都无法逃逸123黑洞……
1.三位数黑洞495:
只要你输入一个三位数,要求个,十,百位数字不相同,如不允许输入111,222等。那么你把这个三位数的三个数字按大小重新排列,得出最大数和最小数,两者相减得到一个新数,再按照上述方式重新排列,再相减,最后总会得到495这个数字。
举例:输入352,排列得最大数位532,最小数为235,相减得297;再排列得972和279,相减得693;接着排列得963和369,相减得594;最后排列得到954和459,相减得495。
把一个四位数的四个数字由小至大排列,组成一个新数,又由大至小排列排列组成一个新数,这两个数相减,之后重复这个步骤,只要四位数的四个数字不重复,数字最终便会变成 6174。
任取一个四位数,只要四个数字不全相同,按数字递减顺序排列,构成最大数作为;按数字递增顺序排列,构成最小数作为,其差就会得6174;如不是6174,则按上述方法再作,至多不过7步就必然得到6174。
如取四位数5679,按以上方法作运算如下:
那么,出现6174的结果究竟有什么科学依据呢?
设M是一个四位数而且四个数字不全相同,把M的数字按递减的次序排列,
然后再把M中的数字按递增次序排列,记作M增,记差M(减)-M(增)=D1,从M到D1是经过上述步骤得来的,我们把它看作一种变换,从M变换到D1记作:T(M)= D1把D1视作M一样,按上述法则做减法得到D2 ,也可看作是一种变换,把D1变换成D2,
要证明,至多是重复7次变换就得D7=6174。
证:四位数总共有0个,其中除去四个数字全相同的,余下1个数字不全相同.我们首先证明,变换T把这8991个数只变换成54个不同的四位数.
设a、b、c、d是M的数字,并:
因为它们不全相等,上式中的不能同时成立.我们计算T(M)
我们注意到T(M)仅依赖于(a-d)与(b-c),因为数字a,b,c,d不全相等,因此由a≥b≥c≥d可推出;a-d>0而b-c≥0.
此外b、c在a与d之间,所以a-d≥b-c,这就意味着a-d可以取1,2,…,9九个值,并且如果它取这个集合的某个值n,b-c只能取小于n的值,至多取n.
例如,若a-d=1,则b-c只能在0与1中选到,在这种情况下,T(M)只能取值:
这就是T(M)所可能取的值的个数.在54个可能值中,又有一部分是数码相同仅仅是不同的值,这些数值再变换T(M)中都对应相同的值(数学上称这两个数等价),剔除等价的因数,在T(M)的54个可能值中,只有30个是不等价的,它们是:
对于这30个数逐个地用上述法则把它换成最大与最小数的差,至多6步就出现6174这个数.证毕.
一、任意N位数都会类似4位数那样归敛(1、2位数无意义) . 3位数归敛到唯一一个数495; 4位数归敛到唯一一个数6174; 7位数归敛到唯一一个数组(8个7位数组成的循环数组______称归敛组);其它每个位数的数归敛结果分别有若干个,归敛数和归敛组兼而有之(如14位数____共有9×10的13次方个数____的归敛结果有6个归敛数,21个归敛组). 以上提到的所有归敛结果(包括一个数字、一个数组或兼有)称为“卡普雷卡尔常数”.
“卡普雷卡尔常数”中的所有的数都是模9数(即都能被9整除以及其全部数字之和也是9的倍数!)
一旦进入归敛结果,继续卡普雷卡尔运算就在归敛结果反复循环,再也“逃”不出去。
归敛组中各数可以按递进顺序交换位置 (如a → b → c 或 b → c → a 或c → a → b)
归敛结果可以不经过卡普雷卡尔运算就能从得出.
某个既定位数的数,它的归敛结果的个数是有限的,也是确定的.
二、较多位数的数(命它为N)的归敛结果是由较少位数的数(命它为n,N>n)的归敛结果,嵌加进去一些特定的数或数组而派生形成。4、6、8、9、11、13的归敛结果中的8个称基础数根.它们是派生所有任意N位数的归敛结果的基础。
第一类是数对型,有两对:
第二类是数组型,有一组:
第三类是数字型,有两个:
2、嵌入数的一部分嵌入前段中大于或等于嵌入数的最末一个数字的后邻位置。另一部分嵌入后段相应位置_____使与嵌入前段的数形成层状结构。
3、(9,0)、(3,6)两对数可以单独嵌入或与数组型、数字型组合嵌入。
必须“配套”嵌入并按顺序: (7,2)→(5,4)→(1,8)或 (5,4)→(1,8)→(7,2)
4,可以嵌如一次、二次或若干次 (则形成更多的归敛结果).
任意N位数的归敛结果都 “隐藏”在这N位数中,卡普雷卡尔运算只是找出它们而不是新造成它们。
任意找一个3的倍数的数,先把这个数的每一个数位上的数字都立方,再相加,得到一个新数,然后把这个新数的每一个数位上的数字再立方、求和,......,重复运算下去,就能得到一个固定的数——153,我们称它为数字“黑洞”。
1、63是3的倍数,按上面的规律运算如下:
继续运算下去,结果都为153,如果换另一个3的倍数,试一试,仍然可以得到同样的结论,因此153被称为一个数字黑洞。
除了0和1自然数中各位数字的立方之和与其本身相等的只有153、370、371和407(此四个数称为“水仙花数”)。例如为使153成为黑洞,我们开始时取任意一个可被3整除的正整数。分别将其各位数字的立方求出,将这些立方相加组成一个新数然后重复这个程序.
除了“”外,同理还有四位的“玫瑰花数”(有:1634、8208、9474)、五位的“五角星数”(有54748、92727、93084),当数字个数大于五位时,这类数字就叫做“”。
当你列举出一个数时(0、负数除外的整数),无论它是奇数还是偶数,只要是奇数就将它×3+1,只要是偶数就将它÷2,一直重复循环,最终一定是“4——2——1”结尾。
任意找一个3的倍数,先把这个数字每一个数位上的数都立方,再相加,得到一个新数,然后把这个新数的每一个数位上的数再立方,求和……重复运算下去,就得到一个固定的数T=______,请分析其原理。
数字黑洞问题是无法与哥德巴赫猜想相比,懂一点数论基础,就可以证明它.
这个数字黑洞问题早已经不是难题了,但要是题目严格证明起来1000个汉字以内是不够的,还是很繁琐。
提供这个题的证明原理:
①如果一个数能被9整除,那么这个数所有位上的数字之和是9的倍数。
②如果一个数能被3整除,那么这个数所有位上的数字立方之和是9的倍数。
③检验所有较小的数是否都有这个结论成立,(不论多少个数,它总归是有限个,不超过3×9×9×9)
④对于较大数,把它按照,法则运算一次,它相当变小,看看是否落在③的范围内……经过有限次运算,它落在③的范围内。
⑤它落在③的范围内,本题得证。