- 博客(13)
- 收藏
- 关注
原创 辗转相除法和更相减损法 定义,原理,Java实现以及优化
要求两个正整数的最大公约数有两种方法,辗转相除法和更相减损法。注:gcd(a,b)代表a和b的最大公约数。辗转相除法的定义:对于两个正整数a和b,其中a>b,r为a除以b的余数,gcd(a,b) = gcd(b,r);原理:设a,b的最大公约数为u,a = u · t1; b = u · t2; (t1 , t2 为某个数,满足等式要求,是多少并不重要,一定存在,因为u为a,b的...
2018-08-29 20:31:18 2576
原创 静态变量为什么不能使用this关键字
public class Student{ //定义一个静态变量,名为a static int a;}静态变量(static 所修饰的变量),是在程序运行之前,也就是编译阶段,分配内存。void test(){ this.a = 1;}而this关键字的意思是,当前对象的a,也就是说,必须要有对象才能用this。而对象的产生,必须在程序运行时,通过n...
2018-08-28 15:01:16 3711 5
原创 面向对象的理解
//面向过程方法1(){ ... 方法2()}方法2(){ ... 方法3()}方法3(){ ...}//面向对象对象.方法1();对象.方法2();对象.方法3();
2018-08-28 09:57:26 94
原创 为什么Java数组长度不可改变?
数组的内存是连续分配的;int [] array = {1, 2 ,3};假设数组内存如上图所示,那么当我们增加数组长度时,就可能导致别的变量被覆盖,导致出错。这时,有人会想,那减少长度也是可以的呀,但是这会出现一个现象,那就是突然,空出来一个内存空间。如果内存空间一开始就分配好,那么会符合整体布局,这个空间可以和别的空间组合,变成一块更大的空间。如下图所示:综合上...
2018-08-22 13:59:08 9335
原创 Java 变量定义中的内存分配问题
int a = 1; Java 到底干了什么。1是一个数值型变量,会直接放在栈中,如下图所示: 第一:先看看栈中是否有1,没有,则划分一个区域,存放1,a指向1.指向的意思一直没搞定,终于想通了,意思是 a 就是 1的地址,不是a等于1的地址,在后续的编译过程中,会把a替换为1的地址。如果理解为a等于1的地址,那么...
2018-08-22 09:25:49 465 1
原创 java == 与 equals 的问题
提出问题:在控制台输入男,进行判断,判断为false,不输出 性别为男Scanner sc = new Scanner();if(sc.next() == "男"){ system.out.println("性别为男");}预备知识:java分为值类型和引用类型。java存储空间分为栈和堆。结论:==判断的是地址是否相同,而equals判断的是地址对应的值是否...
2018-08-21 19:14:12 137
原创 计算机补码的理解
提出问题:计算机本质上是二进制电路,比较好作加法,但是不好作减法,人们需要将减法转化为加法。预备知识:负数的表示,计算机使用最高位代表符号位,如1001 = -1,0001 = 1。1 + (-1) = 1001 + 0001 = 1010 = -2,出现错误。说明在二进制中,不能直接在正数前面添负号,将它变为负数。来试试一个方法,数学中负数完整的表示为 -2 = 0 - 2;那么...
2018-08-21 18:38:13 173
原创 Java清晰逻辑和调理的代码的怎样的
一个简单的问题,判断润年还是平年?下面两段代码同时解决这一个问题:Scanner sc = new Scanner(System.in);int year = sc.nextInt();if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { System.out.println("是闰年");} e...
2018-08-21 17:43:54 398
原创 为什么32位系统只能支持4G内存
预备知识:内存:计算机有两个存储空间,一个叫内存,一个叫硬盘;区别?试想,玩游戏时加个硬盘,能提高游戏性能吗?不能,但加内存可以,因为CPU只能直接操作内存,不能操作硬盘。玩游戏时,或者用软件时,都有个加载过程,就是把硬盘里的内容,传输到内存。32位:内存地址的位数。byte与bit:一个bit就是一个二进制位,如1111 0000,就是8bit,也叫8位;1byte = 8 bit,...
2018-08-21 10:23:23 2796
原创 十进制乘法 位移运算 的表示
在计算机中 如何计算十进制25 * 10?预备知识: 4(十进制) * 2 = 100(二进制) * 2 = 100(二进制) << 1(左移一位) = 1000(二进制) = 8 (十进制)可以自行演示4(十进制)* 4 ; 得到的结论为 左移 1 位,即乘以2,左移两位,即乘以4,依次类推。右移即除。25 * 10 = 25 * 8 + 25 * 2= 转二进...
2018-08-21 09:39:52 3824
原创 Java注释与代码风格
package com.woniuxy.leassionFirst; //导入包,包括所需要的资源/* * author: InvisibleDes * time: 8/20/2018 *//** 类的注释;这种地方,只能写class+名字 **/public class MainClass { /* 方法的注释;这种地方,只能写声明语句或者方法 */ int a;...
2018-08-20 11:57:58 807
原创 Eclipse--Java代码快速输入-template模版的使用
在使用Java的过程中,发现有许多代码需要重复输入,最常见的就是System.out.println(" ");。为了解决这个问题,Eclipse提供了一个template的功能,可以通过暗语的形式,快速输入。示例使用过程如下:第一步,进入Java Template页面第二步,找到名称为sysout的东东,双击,进入如下页面第三步,理解它,其实就是你只要输入sysout...
2018-08-12 11:59:51 1031 1
原创 Eclipse 修改包名错误
刚刚开始学习java,在使用eclipse的时候,偶然想修改src下一个包的包名,然后出现错误。错误信息为problem encountering while moving resources,很直白,没有任何提示。重要的是,这个错误无法重现。我只能说明我的处理方式:新建一个包; 选择原来包中的文件,右击,选择Refactor,再选择move; 移动到新包; 这时会发现,原来...
2018-08-06 10:23:30 4122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人