- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 static关键字的作用
static是一个修饰符,用于修饰成员(成员变量和成员函数):1.当static修饰成员变量: static修饰成员变量是解决数据的共享问题,static修饰的数据是每个对象共享 的数据。如果所有对象中某一个属性的值是一样的,那么在内存中会造成大量的数据重复,所以我们可以把这个重复的数据拿出来,放在一个公共的地方,就用static修饰,如图:
2017-05-10 09:55:59
888
原创 this关键字的作用
在Java中this关键字的作用有两个: 1.当成员变量与局部变量同名时,用来区分成员变量和局部变量; 2.在构造函数中调用构造函数。 下面我们来详细解释一下这两句话: 1.区分成员和局部变量: 有时我们为了让变量更具有语义化,经常会出现成员变量和局部变量同名的问题,这时候就要用到this了,比如以下代码:class Word{ public static void
2017-05-06 20:49:34
13212
3
原创 基本数据类型和引用数据类型的参数传递
基本数据类型参数传递: 主函数进栈,定义x变量并赋值;调用show方法,show方法进栈,定义变量x;将参数x赋值给show方法中的x,此时show方法中的x为3;将show方法中的x赋值为4;默认有一个return语句,结束函数,show方法出栈(弹栈);执行main函数里的输出语句,输出的值为3。
2017-05-02 21:08:34
1334
原创 对象在内存中是如何体现的
关于对象在内存中的体现,我们还是要先提到堆和栈的概念,这里就不详细说了,可以转至: http://blog.youkuaiyun.com/pt666/article/details/70876410 我们用三个例子来说明对象在内存中的创建以及引用型变量如何与对象联系起来: 例一: Car c=new Car();
2017-05-02 17:17:39
3299
1
原创 冒泡排序和选择排序以及选择排序的优化
冒泡排序:两个相邻的数据两两相比,如果是从小到大排列,将较大的数据换位到较小数后面,这样第一轮结束,最后一个数据是最大的数据,因为总是把较大的数据换到后面,再进行第二轮,第三轮(此时已经排好序的数据可以不再参与排序,提高效率)......当第二个数据确定时,第一个数据也就确定了,排序结束。大圈套小圈思想,外层循环控制次数,内层循环控制比较的数据。 选择排序和冒泡会用到数据的位置交换,
2017-05-02 08:10:07
835
原创 二分查找
当一个数组需要用到查找方法时,可以遍历整个数组,找到相等的值返回下标,这种方法效率比较低。如果这个数组是有序的,我们可以使用二分查找(折半查找)。二分查找是将数组不断的分成两段,判断我们要找的数据与中值是否相等。 如果我们有这样一个数组 int [] arr={0,10,20,30,40,50,60,70},使用二分查找找到60; 我们首先要找到中值30与60对比,3
2017-05-01 16:10:50
562
原创 堆和栈的概念和区别
在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进行管理。 JVM内存的划分有五片: 1. 寄存器;
2017-04-27 19:06:37
317253
92
原创 不一样的for循环
提到for循环,我们肯定就想到一种写法:for (int x=0;x<3; x++) { System.out.println("这是循环体");}这是一种很常见的写法,但是使用for循环,我们都形成了一种固化的思维,其实for循环也可以很不一样。for循环的格式是这样的:for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句;(循
2017-04-24 19:39:24
698
原创 不用第三方变量如何交换两个数的值
如果要交换两个变量的值,我们首先想到的就是定义一个第三方变量暂存其中一个变量的值: 如果我们不使用第三方变量怎么交换两个变量的值呢? 1.利用两数之和减去另一个数的方式: 这样也能成功交换两个数的值,但这种方法,如果两个数很大,可能会超出类型范围,造成数据丢失精度。所以不常用。
2017-04-23 19:59:15
18532
2
原创 运算符&与&&,|与||的区别
&和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。 一.(1)当&与&&同为逻辑运算符时,它们都用于连接两个Boolean类型的表达式,当&和&&的两端表达式同时为真时,表达式的结果为真,只要有一端为假,那么表达式结果为假。从用法上来看,&和&&并没有什么区别,比如我们可以写两个表达式: 3>5&3>2; 3>5&&3>
2017-04-23 17:03:11
66958
原创 a++ 与++a在内存中的正确姿势
我们平时解释b=a++与b=++a是这样解释的: b=a++是先把a的值赋给b,然后a自加1; b=++a是a先自加1,在把值赋给b。 那么如果a=3: b=a++计算后b=3,a=4; b=++a计算后b=4,a=4; 验证一下确实如此:
2017-04-22 21:46:00
2029
3
原创 隐含强制类型转换——从变量说起
隐含强制类型转换:顾名思义,看不见的强制类型转换,关于这个问题,我们先来读懂一句话: byte b =3; 我们知道一个整数的默认类型int类型,没错3是int类型,当把3赋值给b的时候,其实默认有一个强制类型转换,编译器判断3在byte类型的范围之内,强制把3转换成了byte类型,然后赋值给了b。所以这就被称作隐含强制类型转换,下面我们来看一个简单的问题:
2017-04-22 18:30:54
3238
原创 Java的环境配置
Java的运行环境是JRE,Java的开发环境是JDK,JDK也包含了Java的运行环境JRE,包括Java编译器,Java运行环境,Java文档生成工具,Java打包工具等。作为开发者而言,我们首先要学会配置Java环境,JDK的下载安装就不用说了,去Oracle官网下载,完全的傻瓜式安装。下面来说一下Java环境的配置: 1.找到安装JDK的文件夹下的bin目录,默认
2017-04-21 23:22:17
377
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人