Java 8种数据类型分别是:1、整型的byte、short、int、long;2、字符型的char;3、浮点型的float、double;4、布尔型的boolean(仅有两个值true, false,变量初始化默认值false)。

long a = 100000L;float f1 = 1.1f;double d1 = 1.2;

注. 声明long类型数据的时候,后面需要加L或者l(一般加大写L);

浮点型(2个):float(单精度型/浮点型)、double(双精度型)

注. 声明float类型的数据的时候加f或者F; double类型的数据的有效位数 15~16;float类型的数据有效位数是 6~7;

引用数据类型

引用数据类型非常多,大致包括:

类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型

例如,String类型就是引用类型。

简单来说,所有的非基本数据类型都是引用数据类型。

Java求阶乘的计算方法

(输入一个正整数n,输出n!的值,n可能很大,n<=1000)

要是20以内数字阶乘使用for循环的阶乘(也可以用递归)使用for循环的基本阶乘算法:

import java.util.Scanner;
public class  Main{
     //IDEA中public static void main(String[] args)的快捷键是:psvm
     public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int n = sc.nextInt();
          int r = 1;//0的阶乘是1,如果是求阶乘和的运算初始值是0
          for (int i = 1; i <= n; i++) {//这里的for循环也是同理,要从1开始
               r = r*i;
          }
          //sout+回车键
          System.out.println(r);
     }
}

最多20的数字。但是如果尝试大于20的值,将失败,因为结果太大而无法放入long中,而导致溢出。

再看可以使用递归的阶乘(当然也不能大于20)

import java.util.Scanner;
public class  Main {
     public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int n = sc.nextInt();
          System.out.println(factorialUsingRecursion(n));
     }
     public static long factorialUsingRecursion(int n) {
          if (n <= 2) {
               return n;
          }
          return n * factorialUsingRecursion(n - 1);
     }
}
public class Main{
     public static void main(String[] args){
          int N = 5;
          for(int n = 0; n <= N; n++){
               int fact = factorial(n);
               System.out.println(n + " 的阶乘值是: " + fact);
          }
     }
     public static int factorial(int n){
          if(n < 1)
               return 1;
          return factorial(n-1) * n;
     }
}




int java 乘以double java int和float相乘_System


若控制台输出结果中文乱码时,改成UTF-8,重启项目: File->Invalidate Cashes/Restart...


int java 乘以double java int和float相乘_开发语言_02


BigInteger,long数据类型只能用于n <= 20的阶乘。对于较大n值,我们可以使用java.math包中BigInteger类 ,它可以容纳高达2^Integer.MAX_VALUE的值:

import java.math.BigInteger;
import java.util.Scanner;
public class  Main{
     public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int n = sc.nextInt();
          BigInteger r = new BigInteger("1");//传一个字符串1
          for (int i = 1; i <= n; i++) {
               //int、long转换为BigInteger:
               //new BigInteger(int i+""); / new BigInteger(long l+"");
               //先将int、long转换为String类型、再使用BigInteger的构造方法创建BigInteger类型的数据
               BigInteger temp =  new BigInteger(""+i);//将这个i变成BigInteger类型
               r = r.multiply(temp);//.multiply(BigInteger val)用于计算两个BigInteger的乘法
          }
          System.out.println(r);
     }
}

Java求阶乘和的计算方法

(输入一个整数X,求满足1!+2!+3!+......+n! = X的最大整数n,例如输入5就会得到n为2)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int sum = 0;//保存阶乘和
        int fac = 1;//保存当前阶乘,不能是0
        int i = 1;
        while(true){
            fac *= i;
            sum += fac;//计算1到i的阶乘
            if (sum >x) break;
            i++;
        }
        System.out.println(i-1);
    }
}

(在屏幕上输出阶乘1!+2!+3!+......+n! 的和假定n为10)

/**
 * 阶乘求和,步骤:先求一个数的阶乘,再把1到10的每一个数的阶乘求和
 */
public class Main {
    public static void main(String[] args) {
        int total = 0;
        for (int i = 1; i <=10; i++) {
            total += fn(i);
        }
        System.out.println(total);
    }
    //给定一个数,求这个数的阶乘
    public static  int fn(int num){
        int result = 1;
        for (int i = num; i >0 ; i--) {
            result *= i;
        }
        return result;
    }
}
/**
 * 阶乘求和,步骤:先求一个数的阶乘,再把1到10的每一个数的阶乘求和
 */
public class Main {
    public static void main(String[] args) {
        int total = 0;
        for (int i = 1; i <=10; i++) {
            total += fn(i);
        }
        System.out.println(total);
    }
    //给定一个数,求这个数的阶乘
    public static  int fn(int num){
        int result = 1;
        if (num >1) {//递归方法
            result  = num * fn(num-1);
        }
        return result;
    }
}