不管是对于 JAVA 编程的学习还是其他的编程语言, 都是从零基础学起, 那么就需要将所有零散的知识点整合在一起, 这样系统地学习一门语言, 才能更好的入门并且掌握, 通过对基础知识点的学习与了解, 才能更加深入的学习后续的编程代码, 在成为 JAVA 开发工程师的道路上可以更加的顺畅.
1, 关键字: 其实就是某种语言赋予了特殊含义的单词.
保留字: 其实就是还没有赋予特殊含义, 但是准备日后要使用过的单词.
2, 标示符: 其实就是在程序中自定义的名词. 比如类名, 变量名, 函数名. 包含 0-9,a-z,$,_;
注意:
(1)数字不可以开头.
(2)不可以使用关键字.
3, 常量: 是在程序中的不会变化的数据.
4, 变量: 其实就是内存中的一个存储空间, 用于存储常量数据.
作用: 方便于运算. 因为有些数据不确定. 所以确定该数据的名词和存储空间.
特点: 变量空间可以重复使用.
什么时候定义变量? 只要是数据不确定的时候, 就定义变量.
变量空间的开辟需要什么要素呢?
1, 这个空间要存储什么数据? 数据类型.
2, 这个空间叫什么名字啊? 变量名称.
3, 这个空间的第一次的数据是什么? 变量的初始化值.
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始, 到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
数据类型:
1): 基本数据类型: byte,short,int,long,float,double,char,boolean
2): 引用数据类型: 数组, 类, 接口.
级别从低到高为: byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换: 从低级别到高级别, 系统自动转的;
强制类型转换: 什么情况下使用? 把一个高级别的数赋给一个别该数的级别低的变量;
运算符号:
1), 算术运算符.
+-*/%%: 任何整数模 2 不是 0 就是 1, 所以只要改变被模数就可以实现开关运算.
+: 连接符.
++,--
2), 赋值运算符.
=+=-=*=/=%=
3), 比较运算符.
特点: 该运算符的特点是: 运算完的结果, 要么是 true, 要么是 false.
4), 逻辑运算符.
&|^!&&||
逻辑运算符除了! 外都是用于连接两个 boolean 类型表达式.
&: 只有两边都为 true 结果是 true. 否则就是 false.
|: 只要两边都为 false 结果是 false, 否则就是 true
^: 异或: 和或有点不一样.
两边结果一样, 就为 false.
两边结果不一样, 就为 true.
& 和 && 区别:&: 无论左边结果是什么, 右边都参与运算.
&&: 短路与, 如果左边为 false, 那么右边不参数与运算.
| 和 || 区别:|: 两边都运算.
||: 短路或, 如果左边为 true, 那么右边不参与运算.
5), 位运算符: 用于操作二进制位的运算符.
- &|^
- <<>>>>>(无符号右移)
练习: 对两个变量的数据进行互换. 不需要第三方变量.
- inta=3,b=5;-->b=3,a=5;
- a=a+b;a=8;
- b=a-b;b=3;
- a=a-b;a=5;
- a=a^b;//
- b=a^b;//b=a^b^b=a
- a=a^b;//a=a^b^a=b;
练习: 高效的算出 2*8=2<<3;
5, 语句.
Ifswitchdowhilewhilefor
这些语句什么时候用?
1), 当判断固定个数的值的时候, 可以使用 if, 也可以使用 switch.
但是建议使用 switch, 效率相对较高.
switch(变量){
case 值: 要执行的语句; break;
...
default: 要执行的语句;
}
工作原理: 用小括号中的变量的值依次和 case 后面的值进行对比, 和哪个 case 后面的值相同了
就执行哪个 case 后面的语句, 如果没有相同的则执行 default 后面的语句;
细节: 1):break 是可以省略的, 如果省略了就一直执行到遇到 break 为止;
2):switch 后面的小括号中的变量应该是 byte,char,short,int 四种类型中的一种;
3):default 可以写在 switch 结构中的任意位置; 如果将 default 语句放在了第一行, 则不管 expression 与 case 中的 value 是否匹配, 程序会从 default 开始执行直到第一个 break 出现.
2), 当判断数据范围, 获取判断运算结果 boolean 类型时, 需要使用 if.
3), 当某些语句需要执行很多次时, 就用循环结构.
while 和 for 可以进行互换.
区别在于: 如果需要定义变量控制循环次数. 建议使用 for. 因为 for 循环完毕, 变量在内存中释放.
break: 作用于 switch, 和循环语句, 用于跳出, 或者称为结束.
break 语句单独存在时, 下面不要定义其他语句, 因为执行不到, 编译会失败. 当循环嵌套时, break 只跳出当前所在循环. 要跳出嵌套中的外部循环, 只要给循环起名字即可, 这个名字称之为标号.
continue: 只作用于循环结构, 继续循环用的.
作用: 结束本次循环, 继续下次循环. 该语句单独存在时, 下面不可以定义语句, 执行不到.
6, 函数: 为了提高代码的复用性, 可以将其定义成一个单独的功能, 该功能的体现就是 java 中的函数. 函数就是体现之一.
java 中的函数的定义格式:
修饰符返回值类型函数名(参数类型形式参数 1, 参数类型形式参数 1,...){
执行语句;
return 返回值;
}
当函数没有具体的返回值时, 返回的返回值类型用 void 关键字表示.
如果函数的返回值类型是 void 时, return 语句可以省略不写的, 系统会帮你自动加上.
return 的作用: 结束函数. 结束功能.
如何定义一个函数?
函数其实就是一个功能, 定义函数就是实现功能, 通过两个明确来完成:
1), 明确该功能的运算完的结果, 其实是在明确这个函数的返回值类型.
2), 在实现该功能的过程中是否有未知内容参与了运算, 其实就是在明确这个函数的参数列表(参数类型 & 参数个数).
函数的作用:
1), 用于定义功能.
2), 用于封装代码提高代码的复用性.
注意: 函数中只能调用函数, 不能定义函数.
主函数:
1), 保证该类的独立运行.
2), 因为它是程序的入口.
3), 因为它在被 jvm 调用.
函数定义名称是为什么呢?
答: 1), 为了对该功能进行标示, 方便于调用.
2), 为了通过名称就可以明确函数的功能, 为了增加代码的阅读性.
重载的定义是: 在一个类中, 如果出现了两个或者两个以上的同名函数, 只要它们的参数的个数, 或者参数的类型不同, 即可称之为该函数重载了.
如何区分重载: 当函数同名时, 只看参数列表. 和返回值类型没关系.
7, 数组: 用于存储同一类型数据的一个容器. 好处: 可以对该容器中的数据进行编号, 从 0 开始. 数组用于封装数据, 就是一个具体的实体.
如何在 java 中表现一个数组呢? 两种表现形式.
1), 元素类型 [] 变量名 = new 元素类型[元素的个数];
2), 元素类型 [] 变量名 ={元素 1, 元素 2...};
元素类型 [] 变量名 = new 元素类型[]{元素 1, 元素 2...};
- // 二分查找法. 必须有前提: 数组中的元素要有序.
- publicstaticinthalfSeach_2(int[]arr,intkey){
- intmin,max,mid;
- min=0;
- max=arr.length-1;
- mid=(max+min)>>1;//(max+min)/2;
- while(arr[mid]!=key){
- if(key>arr[mid]){
- min=mid+1;
- }
- elseif(key<arr[mid])
- max=mid-1;
- if(max<min)
- return-1;
- mid=(max+min)>>1;
- }
- returnmid;
- }
java 分了 5 片内存.
1: 寄存器. 2: 本地方法区. 3: 方法区. 4: 栈. 5: 堆.
栈: 存储的都是局部变量(函数中定义的变量, 函数上的参数, 语句中的变量);
只要数据运算完成所在的区域结束, 该数据就会被释放.
堆: 用于存储数组和对象, 也就是实体. 啥是实体啊? 就是用于封装多个数据的.
1: 每一个实体都有内存首地址值.
2: 堆内存中的变量都有默认初始化值. 因为数据类型不同, 值也不一样.
3: 垃圾回收机制
来源: http://www.bubuko.com/infodetail-2554205.html