一、数据类型
在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 + "是水仙花数");
}
}
}
}
结果: