表达式 (Expression)
语句 :以分号结束
语句块
java中程序的三种结构:顺序结构 分支结构 循环结构
if(逻辑表达式,备注,和c不同,一定是逻辑结果){
条件为真时执行
}
else {
条件为假时执行
}
if(true)条件
switch(int类型|string类型| Enum类型)
case 条件1:
…
case 条件2:
break;
…
default;
}
注意:回车用%n 不用\n
循环结构:
while (条件){
//在Java中多了一种for的形势 foreach
//for(元素类型 变量名 :容量数组){
//}
}
for(初始化 ;条件;后续动作)
{
}
do{
}while (条件)
continue 和break 都支持带标签的形式
public static void fied () {
int [] array ={1,2,3,4,5,6,7};
for(int i=0;i
break;
}
}
方法组成:
- 限定符:
- 返回值类型,如果没有返回值,要明确写void
- 方法名称,命名习惯:收个单词全小写,以后的单词首字母大写,多为动词
- 参数列表 () | 参数类型 参数名称
- 异常声明 throw
- ** 方法体{}
public static int caleSum(int[] array) thows Exception{
… //下划线分别为1——6
}
重点:关于方法签名 (Method signature)
方法名称+参数列表
int sum(int a ,int b){} void sum (int a, int b) {} 一样
int sum (int a,int b ,int c){}不一样
方法名称相同,但参数列表不同
重载 (overload)通常情况下,用不到重载,例外:重载在构造方法中很常见
要和 重写 区分
public class cation{
//计算n的位数,n一定为正数
public static int calcDigitNum (long n) {
int digitNum=0;
while (n>0)
{
n=n/10;
digitNum++;
}
return digitNum;
}
//pubilc stactic int factorial(int n)
public static void main (String[] args)
{
//long n=Long.parseLong(long
int m =calcDigitNum(1234);
System.out.printf("%d",m);
}
}
利用简单whlie循环判断位数
public class cation{
//计算n阶乘
public static int calcDigitNum1 (int n) {
if (n==1){
return 1;
}
else {
return n*calcDigitNum1(n-1);
}
}
public static long calcDigitNum2 (int n) {
long fact=1;
for (int i=1;n>=i;i++)
{
fact =fact*i;
}
return fact;
}
public static void main (String[] args)
{
long m =calcDigitNum1(5);
System.out.printf("%d",m);
long fact =calcDigitNum2(5);
System.out.printf("%d",fact);
}
}
函数递归思想计算阶乘
当n=1时,n!=1
当n>1时,n!=n*(n-1)!
public class cation{
//计算e=1-1/1!+1/2!-…+1/n!
public static long factorial (int n){
//求阶乘1.递归 2.循环
if (n==1|n==0){
return 1;
}
else {
return n*factorial(n-1);
}
}
public static double calcE(int n) {
//加法
double sum =0.0;
int j=1;
for (int i=0;i
利用1.函数递归 (同上一个代码) 2.循环的方法 计算e=1-1/1!+1/2!-…+1/n!
public class cation{
//反转字符串
public static String reverse (String s){
int length=s.length();
String r="";
for (int i=length-1 ;i>=0;i--)
{
char ch =s.charAt(i);
r=r+ch;
}
return r;
}
public static String decToHex(int dec ) {
//10进制变为16进制
String hex ="";
while (dec>=16)
{
int remainder =dec%16;
dec=dec/16;
if(remainder<10) {
hex=hex+remainder;
}
else {
char ch=(char )('A'+(remainder-10));
hex=hex+ch;
}
}
return reverse (hex);
}
public static void main (String[] args){
String message ="Hello";
String r=reverse (message);
System.out.printf(r);
//反转为“olleH"
System.out.printf(decToHex(212324));
}
}
1.反转字符串例子:hello变为olleh
2.将十进制数字转为16进制
原理:/16,%16
在Java中,递归没有任何特殊性
但是利用了数学归纳法的思想
核心:要有局部性原则,不要在写递归时尝试展开递归过程
举例:汉诺塔游戏