JAVA基础(第2天java基本语法)

1. 三元表达式的嵌套

int b=0 ;
int a = 1;
System.out.println(  b = b == a?0:1);

举例子:

	int a=10;
	int b=9;
	int c=8;
	//求三个变量的最大值
	System.out.println(a>b?a:(b>c?b:c));
	//嵌套的三目循环执行顺序由外及里

在这里插入图片描述
而单目三元表达式等价

	int b;
	boolean a = false;
	if(a){
		b = 0;
	}else{
		b = 1;
	}

2. 生成一个随机数

方法1:产生一个0到1的随机数

System.out.println("Math.random()=" + Math.random());
	// 结果是个double类型的值,区间为[0.0,1.0)
	int num = (int) (Math.random() * 3); 
	// 注意不要写成(int)Math.random()*3,这个结果为0,因为
	//(int)Math.random()*3等于((int)Math.random())*3
	//先执行了强制转换
方法2:
	package baowenli;
	import java.util.Random;
	public class Practise {
		public static void main(String[] args) {
			/*想要获取一个范围内的随机数(例如26,随机数可能是0-25),首先需要一个种子(其实就是一个数值)。
    每个种子会对应这个范围内(0-26)的唯一的一个随机数。
    47这个种子在26这个范围内,所对应的随机数为24,所以每次随机得出的结果都为24.
    (注意:47在26这个范围内对应的是24,这个是死的,固定的,无论你执行多少次,它还是24)
    至于为什么种子47会对应24,这个涉及到java封装的算法,有兴趣可以深入了解。*/

			Random r = new Random(46);
			System.out.println("随机数列为:");
			//第一个for循环
			for (int i = 0; i < 5; i++) {
				int ran1 = r.nextInt(10);
				System.out.print(ran1+"\t");
			}
			//第二个for循环
//			System.out.println();
//			for (int i = 0; i < 5; i++) {
//				int ran1 = r.nextInt(10);
//				System.out.print(ran1+"\t");
//			}
		}
	}

产生的随机数列;
在这里插入图片描述


当把第一个for屏蔽,执行第二个for后

	package com.wdzl.demo06;
	import java.util.Random;
	public class Practise {
		public static void main(String[] args) {
		/*想要获取一个范围内的随机数(例如26,随机数可能是0-25),首先需要一个种子(其实就是一个数值)。
    每个种子会对应这个范围内(0-26)的唯一的一个随机数。
    47这个种子在26这个范围内,所对应的随机数为24,所以每次随机得出的结果都为24.
    (注意:47在26这个范围内对应的是24,这个是死的,固定的,无论你执行多少次,它还是24)
    至于为什么种子47会对应24,这个涉及到java封装的算法,有兴趣可以深入了解。*/
    
			Random r = new Random(46);
			System.out.println("随机数列为:");
			//第一个for循环
//			for (int i = 0; i < 5; i++) {
//				int ran1 = r.nextInt(10);
//				System.out.print(ran1+"\t");
//			}
			//第二个for循环
			System.out.println();
			for (int i = 0; i < 5; i++) {
				int ran1 = r.nextInt(10);
				System.out.print(ran1+"\t");
			}
		}
	}

在这里插入图片描述
**随机数种子的作用:**第几个位置产生的随机数是固定的,不会更改。

//不带种子的:Random r = new Random();
//带种子的:Random r = new Random(5);

总结一下:
**Random的对象有两种构建方式:

  • 带种子
  • 不带种子

不带种子的方式将会返回随机的数字,每次运行结果不一样。无论程序运行多少次,带种子方式构建的Random对象会返回一样的结果。

Random()构成一个随机数
Random(long seed)用种子seed构造一个随机数生成器

下面给几个例子:

1.	生成[0,1.0)区间的小数:double d1 = r.nextDouble();
2.	生成[0,5.0)区间的小数:double d2 = r.nextDouble() * 5;
3.	生成[1,2.5)区间的小数:double d3 = r.nextDouble() * 1.5 + 1;
4.	生成100之间的整数:int n = r.nextInt(100);
5.	生成[0,10)区间的整数:
       //方法一
    int n2 = r.nextInt(10);
    //方法二
    n2 = Math.abs(r.nextInt() % 10);

3. switch语句

	Jdk4版本之前,
	Switch(  )括号里的值是int(包括 byte char short int)
	jdk5版本 -----枚举型
	jdk7版本之后------是 string 型
	default位置  可以任意,可以没有default语句

4. Ascii码值

		0——48
		A——65
		a——97

5.循环3条件

  • 初始化条件变量
  • 条件表达式
  • 改变循环条件

6. while
7. do-while;
8. for循环


这里仅对for循环做强调
for循环的表达式一般如下:
for(表达式1;表达式2;表达式3){
表达式4;
}

执行的顺序为:
1)第一次循环,即初始化循环。
首先执行表达式1(一般为初始化语句),再执行表达式2(一般为条件判断语句),判断表达式1是否符合表达式2的条件,如果符合,则执行表达式4,否则,停止执行,最后执行表达式3.
2)下次的循环:
首先执行表达式2,判断表达式3是否符合表达式2的条件;如果符合,继续执行表达式4,否则停止执行,最后执行表达式3.如果往复,直到表达式3不再满足表达式2的条件。


9.continue 和 break;

breakcontinue的区别问题

 1. break是跳出循环体 
 2. continue是终止本次循环,继续进入下次循环
break常用于switch结构和循环结构中
continue一般用于循环结构中
**相同点:跳出循环体后面语句的剩余部分**	

10.可变长参数类型

  • 可变长参数类型:jdk1.5开始
public int add(int...num) {
	int sum = 0;
	for (int i = 0; i < num.length; i++) {
		sum +=num[i];
	}
	return sum;
}
public float add1(float...num) {
	float sum=0;
	for (int i = 0; i < num.length; i++) {
		sum += num[i];
	}
	return sum;
}
public String add2(String...num) {
	String sum="";
	for (int i = 0; i < num.length; i++) {
		sum += num[i];
	}
	return sum;
}
public char add3(char...num){
	char sum=' ';
	for (char i = 0; i < num.length; i++) {
		sum += num[i];
	}
	return sum;
}

11.无返回值的方法

  • 可以出现return 但是不能返回具体的值

12.进制转换:

//十进制转为其他进制

一个十进制数转换为二进制
一个十进制数转换为八进制
一个十进制数转换为十六进制
System.out.println(b10+"的二进制:"+Integer.toBinaryString(b10));
System.out.println(b10+"的八进制:"+Integer.toOctalString(b10));
System.out.println(b10+"的十六进制:"+Integer.toHexString(b10));
将数字类型的字符串转换为整形:
int number = Integer.parseInt("1234");
例题1:打印三角形
package progect1_2;

public class Triangle {
	public static void main(String[] args) {
		for(int i = 0;i<4;i++) {
			for(int j = 0;j< 4-i-1;j++) {
				System.out.print(" ");
			}
			for(int j = 0;j< 2*(i+1)-1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

例题2:打印对称三角形
package diertian;

public class SymTriangle {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			for (int j = 0; j < 2*i-1; j++) {
				System.out.print("*");
			}
			for (int j = 0; j < 41-2*(2*i); j++) {
				System.out.print(" ");
			}
			for (int j = 0; j < 2*i-1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

例题3:打印菱形
package progect1_2;

public class Diamond {
	public static void main(String[] args) {
		for(int i = 0;i<4;i++) {
			for(int j = 0;j<4-i-1;j++) {
				System.out.print(" ");
			}
			for(int j = 0;j<2*(i+1)-1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for(int i = 0;i<3;i++) {
			for(int j = 0;j<i+1;j++) {
				System.out.print(" ");
			}
			for(int j=0;j<5-2*i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

例题4:打印空心菱形
package progect1_2;

public class NoDiamond {
	public static void main(String[] args) {
		//i的值决定上面半个菱形的行数
		//更改1
		for(int i = 0;i<15;i++) {
			//这个for循环里的4必须和上面的4对应
			//更改2
			for(int j =0;j<15-i-1;j++) {
				System.out.print(" ");
			}
			for(int j =0;j<(2*(i+1)-1);j++ ) {
				if(j>=1&&j<2*i) {
					System.out.print("-");
				}else {
					System.out.print("*");
				}
				
			}
			System.out.println();
		}
		//第二个for循环里i的值比第一个i的值要小1
		//更改3
		for(int i = 0;i<14;i++) {
			for(int j=0;j<i+1;j++) {
				System.out.print(" ");
			}
			//注意:更改  这个for循环里的7必须和上面for循环里的 7对应
			//更改4
			for(int j = 0;j<(2*14-1)-2*i;j++) {
				//更改5
				if( j>=1&&j<((2*14-2)-2*i)) {
					System.out.print("-");
				}else {
					System.out.print("*");
				}
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值