java知识点积累(二)
2024-09-07 18:58:12
4、条件运算符(三元运算符):
String type = score<60?"不及格":"及格";
int i = (string=="hello"? 10:-1);
int j = (x>0 ? 1:(x>10 ? 2:-1));//多重嵌套
5、 静态导入(static import)是在JDK1.5新增加的功能,其作用是用于导入制定类的静态属性,这样就可以直接使用静态属性;
import static java.lang.Math.PI; //导入Math类的PI属性
6、equals()方法提供定义“对象内容相等”的逻辑
7、当类中定义了有参构造方法,无参构造函数就不再存在,想要使用必须在类中显式声明;
8、逻辑运算符:
运算符 | 符号 | 说明 |
---|---|---|
逻辑与 | &(与) | 两个操作数为true,结果才为true,否则是false |
逻辑或 | |(或) | 两个操作数一个是true,结果就是true |
短路与 | &&(与) | 只要有一个为false,则直接返回false |
短路或 | ||(或) | 只要有一个为true,则直接返回true |
逻辑非 | !(非) | 取反:!false为true,!true为false |
逻辑异或 | ^(异或) | 相同则为false,不同为true |
短路与和短路或采用短路的方式,从左到右计算,如果只通过运算符左边的操作数就能确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。
9、递归结构
- 递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。
- 利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。
- 递归结构包括两个部分:
- (1)定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
- (2)递归体。解答:什么时候需要调用自身方法。
public class Test22{
public static void main(String[] args) {
long d1 = System.currentTimeMillis();
System.out.printf("%d阶乘的结果:%s%n",10,factorial(10));
long d2 = System.currentTimeMillis();
System.out.printf("递归费时:%s%n",d2-d1); //耗时:32ms
}
/** 求阶乘的方法*/
static long factorial(int n) {
if(n == 1) {//递归头
return 1;
}else{//递归体
return n*factorial(n - 1); //n! = n*(n - 1)!
}
}
}
- 递归的缺陷:
- 简单的程序是递归的有点之一,但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时,速度比循环慢得多,所以在使用递归时要慎重。
- 注意事项
- 任何能用递归解决的问题也能使用迭代(循环)解决。当递归方法可以增加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;
- 在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。
最新文章
- JMeter专题系列(六)集合点
- AOP动态代理解析5-cglib代理的实现
- SSH开发实践part2:双向1-N连接配置
- Heritrix源码分析(三) 修改配置文件order.xml加快你的抓取速度(转)
- Java同步块(synchronized block)使用详解
- Win7 64位系统U盘安装Centos6.5双系统
- 使用了hibernate时候乱码问题
- 为你的网页中添加一些空格&;nbsp;
- 【和我一起学习Unity3D】Unity3D的坐标控制
- HDOJ 1598 Kruscal
- 安徽省2016“京胜杯”程序设计大赛_F_吃在工大
- Typora学习笔记
- gradle项目
- Javascript高级编程学习笔记(36)—— DOM(2)Document
- 一篇好文之Android数据库 GreenDao的完全解析
- Angular的一些用法或者结构技巧
- 解题:NOI 2010 航空管制
- NPM install 中:-save 、 -save-dev 和 没有--save的情况
- Windows下 搭建redis集群
- MVC把表格导出到Excel