java知识点积累(二)
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)!
}
}
}
- 递归的缺陷:
- 简单的程序是递归的有点之一,但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时,速度比循环慢得多,所以在使用递归时要慎重。
- 注意事项
- 任何能用递归解决的问题也能使用迭代(循环)解决。当递归方法可以增加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;
- 在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。
java知识点积累(二)的更多相关文章
- java知识点积累(一)
知识点积累 1.关于final的重要知识点: final关键字可以用于成员变量.本地变量.方法以及类: final修饰的成员变量必须在声明时被初始化,或者在构造器中初始化,否则就会报编译错误: 不能够 ...
- Java 知识点(二)
接<Java 知识点(一)> java的输入输出与 c 语言不同,下面介绍Java的格式: 16.因为Java的输入类Scanner,定义在java.util包中,所以Java需要输入时要 ...
- Maven知识点积累二
①maven常用命令: mvn clean:清除target下编译生成的class文件 mvn compile:编译 mvn package:打包放到target下 mvn install:打包并放到 ...
- Java 面试知识点解析(二)——高并发编程篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- java基础知识点补充---二维数组
#java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- java‘小秘密’系列(二)---Integer
java'小秘密'系列(二)---Integer 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bug的时候,才能处理更加从容. 目录 java'小秘 ...
- javascript知识点积累
8年javascript知识点积累 08年毕业就开始接触javascript,当时是做asp.net发现很多功能用asp.net控件解决不了,比如checkbox单选,全选问题,自动计算总价问题, ...
- Java知识点脑图
做服务器开发有十几年了,其中大部分用到的都是Java服务器开发,从JDK1.4到现在的JDK1.8,从基本的Java Application到 J2EE(JBOSS,Glassfish),OSGI,到 ...
随机推荐
- How to reduce Index size on disk?减少ES索引大小的一些小手段
ES索引文件瘦身总结如下: 原始数据:(1)学习splunk,原始data存big string(2)原始文件还可以再度压缩倒排索引:(1)去掉不必要的倒排索引信息:例如文件位置倒排._source和 ...
- vue2.0项目实战使用axios发送请求
在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...
- 全面解析Bootstrap手风琴效果
触发手风琴可以通过自定义的data-toggle 属性来触发.其中data-toggle值设置为 collapse,data-target="#折叠区标识符". 第一步:设计一个面 ...
- javascript笔记(二)
concat() 连接多个字符串,返回合并后的字符串. 1 var s1="a"; 2 var s2="b"; 3 var s3="c"; ...
- luogu2622开灯问题2
#include<iostream> #include<cstdlib> #include<algorithm> #include<cstdio> #i ...
- Kindergarten
传送门:http://poj.org/problem?id=3692 Language:KindergartenTime Limit: 2000MS Memory Limit: 65536KTotal ...
- 【VisualStudio】软件安装中出现的问题
针对2017版本安装 1. 安装windows通用平台工具出错 报错信息:15605 FQ安装. 2. LINK : fatal error LNK1104: 无法打开文件“gdi32.lib” 在 ...
- mongodb 学习资料
1 入门 http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html http://www.cnblogs.com/hoo ...
- C# 性能总结
尽量使用using语句块和finally (实现IDisposable) 尽量使用单个大程序集而不是多个小程序集 (使用NGen.exe) 使用sealed关键字 权衡虚函数 使用弱引用
- 安装phpredis
1.下载安装包 https://github.com/nicolasff/phpredis/archive/2.2.5.tar.gz 2.解压到~目录 tar -xvf phpredis-2.2.5. ...