Java入门(二)

一、数据类型

在Java中,一共有8中基本数据类型,它们分别是byte、short、int、long、float、double、char、boolean
该程序获取所有基本类型的最大和最小值,boolean是布尔值类型,它的取值范围为true或者false

public class Main{
	public static void main(String[] args){
		System.out.println("byte最大值:" + Byte.MAX_VALUE);
        System.out.println("byte最小值:" + Byte.MIN_VALUE);
        System.out.println("short最大值:" + Short.MAX_VALUE);
        System.out.println("short最小值:" + Short.MIN_VALUE);
        System.out.println("int最大值:" + Integer.MAX_VALUE);
        System.out.println("int最小值:" + Integer.MIN_VALUE);
        System.out.println("long最大值:" + Long.MAX_VALUE);
        System.out.println("long最小值:" + Long.MIN_VALUE);
        System.out.println("float最大值:" + Float.MAX_VALUE);
        System.out.println("float最小值:" + Float.MIN_VALUE);
        System.out.println("double最大值:" + Double.MAX_VALUE);
        System.out.println("double最小值:" + Double.MIN_VALUE);
        System.out.println("char最大值:" + Character.MAX_VALUE);
        System.out.println("char最小值:" + Character.MIN_VALUE);
	}
}

结果:
在这里插入图片描述
char的值在我本地出现了乱码,它的最大值是’\uFFFF’,最小值为’\u0000’
代码用到的Byte,Short,Integer,Long,Float,Double,Character是其基本类型的包装类,内部含有许多实用的方法,感兴趣的读者可以通过jdk文档进行研究

二、运算符

在这里插入图片描述
++和- -位置与运算关系

public class Main{
	public static void main(String[] args){
		int a = 1;
        int b = a++;
        a = 1;
        int c = ++a;
        System.out.println(b);
        System.out.println(c);
	}
}

结果:
在这里插入图片描述
结论:
a++是先赋值,后+1
++a是先+1,后赋值

?:(三目运算符)

public class Main {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a > b ? "a大于b" : "a小于b");
    }
}

结果:
在这里插入图片描述
结论:
三目运算符就是,? 前面是判断条件,? 后面 : 前面是条件为真的取值,: 后面是条件为假的取值
(判断条件) ?(真) : (假)

算法

1、gcd

public class Main {
    public static void main(String[] args) {
        System.out.println(gy(10,5));
    }

    public static int gy(int a, int b) {
        return b == 0 ? a : gy(b, a % b);
    }
}

这里是求10和5的最大公约数,其结果为5,该算法是运用递归和三目运算符版本的辗转相除法
在这里插入图片描述
2、快速幂

public class Main{
	public int (int a, int n){
	    int ans = 1;
	    while(n > 0){
	        if(n & 1 > 0){
	        	ans *= a;
	        }
	        a *= a;
	        n >>= 1; 
	    }
	    return ans;
	}
}

该算法使用到了while循环,位运算,可以很快的算出a的n次方的幂值

三、循环控制语句

for循环

for(单次表达式;条件表达式;末尾循环体){中间循环体;}
小例子: 1-100相加

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1;i <= 100;i++){
            sum += i;
        }
        System.out.println(sum);
    }
}

首先在main函数范围内定义一个sum的int类型变量,设置其值为0,然后给个for循环,单次表达式一般用于初始化一个变量,所以这里就是int i = 1,将i这个变量初始化为1,条件表达式根据题干可知要将其设置为i <= 100,末尾表达式一般使for循环范围的某些变量进行改变,所以这里是i++,中间的循环体是sum += i,这个其实就是sum = sum + i,最后整个循环结束后,打印sum值
在这里插入图片描述

while循环

while(条件表达式){循环体}
小例子: while循环版本1-100相加
while是需要在main函数范围中先定义一个变量,然后进行条件表达式的判断,如果为真,就进入循环体,如果为假,就跳过循环,执行下一个语句

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        int i = 100;
        while(i > 0){
            sum += i;
            i--;
        }
        System.out.println(sum);
    }
}
do…while循环

do{循环体}while(条件表达式)
do…while循环与while循环不同的地方在于,do…while第一次执行会无视条件表达式,先执行一次循环体中的语句,然后后面根据条件表达式的真假进行循环或者不循环

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        int i = 100;
        do{
            sum += i;
            i--;
        }while(i>0);
        System.out.println(sum);
    }
}

四、条件控制语句

if…else语句

if(条件表达式){语句1}else{语句2}
如果满足条件表达式,就执行语句1,否则执行语句2

public class Main {
    public static void main(String[] args) {
        int a = 1,b = 2;
        if(a < b){
            System.out.println("a小于b");
        } else {
            System.out.println("a大于b");
        }
    }
}

执行结果:
在这里插入图片描述

if…else if…else语句

if(条件表达式1){语句1} else if(条件表达式2){语句2} else {语句3}
自上而下,先检查条件表达式1是否满足,如果满足就执行语句1,如果不满足,就检查是否满足条件表达式2,如果满足就执行语句2,如果不满足,就执行语句3
这种语句可以有很多个else if

public class Main {
    public static void main(String[] args) {
        int a = 2,b = 2;
        if(a < b){
            System.out.println("a小于b");
        } else if(a == b){
            System.out.println("a等于b");
        } else {
            System.out.println("a大于b");
        }
    }
}

结果:
在这里插入图片描述

switch…case语句

switch(变量){case 值: 语句;default: 语句}
这种语句类似开关,变量就是一个标志,case中的值为条件,只要该变量等于该条件,就会执行对应的语句,如果所有的case都不满足,就会执行default语句

public class Main {
    public static void main(String[] args) {
        int a = 2;
        switch(a){
            case 1: System.out.println("a的值为1");break;
            case 2: System.out.println("a的值为2");break;
            default:System.out.println("a的值不在1-2范围内");
        }
    }
}

结果:
在这里插入图片描述

小例子

水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

public class Main {
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            //获取百位
            int a = i / 100;
            //获取十位
            int b = (i - a * 100) / 10;
            //获取个位
            int c = i % 10;
            int sum = a * a * a + b * b * b + c * c * c;
            if (sum == i) {
                System.out.println(i + "是水仙花数");
            }
        }
    }
}

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值