一.学习内容:
今天学习:Java发展历程,以及Java的组成,Java跨平台的原理,jdk和jre,random类,创建类的三部曲,编程的的一些思考。
二. 具体内容:
java发展历程:
Java是由Java之父詹姆斯.高斯林创建的,java分为Javase javame以及Javaee三个版本,Javase主要使用来桌面应用开发,桌面应用的意思是指用户只要打开程序,程序的界面会让用户在很短的时间内找到自己需要的功能,帮用户更快的完成工作和更好的使用体验。javame主要用来嵌入式电子类的开发,现在很少用了,像以前的2.5G的冒泡社区,而Javaee,企业版开发,主要是网站,web开发。
现在Java以前的框架ssh到ssm spring boot springmvc springcloud 分布式,微服务,中间件。
java跨平台原理:
平台:是指操作系统(windows/Mac/Linux)。
PC端:是指电脑
移动端:是指手机,平板、智能设备(手表)
跨平台:java程序可以在其它操作系统上运行。
跨平台的原理如图所示:
JVM(虚拟机)本身是否可以跨平台?
答:JVM虚拟机本身不允许跨平台,允许跨平台的是java程序。
jdk和jre:
jdk:全称java depevolpement kit又名Java开发工具包,包含了代码的编译工具和运行工具。
jre:全称java runtime environment,是Java运行时的环境,包含了jvm虚拟机和Java的核心类库。其中:
类:Java程序的基本单位
类库:存放多个Java类文件的仓库
java程序开发包含了三个步骤
编写源代码、编译源代码、运行代码
jre和jdk和jvm的关系:
我们编译代码时要用到Jre中已经写好的Java代码。要用到JDK中的编译工具javac编译成一个字节码文件,要运行代码时要用到jdk中的运行工具,最终我们的字节码文件在jvm虚拟机运行。
创建类的三部曲:
这里直接用random举例:
1.导包:import java.util.Random;(这个我们导包是因为我们使用的这个包是别人封装好的,不是自己创建的。)
2.创建对象:Random r=new Random() (这里是我们new了一个random对象,然后把他赋值给r这个变量。)
3.获取:int number = r.nextInt(10); (10以内的随机数,取值范围是 [0,10})。这里有个疑问创建对象之后,可不可以引用多次这个对象r。
三.题目:
倒三角形:
package day02;
public class piture2 {
public static void main(String[] args){
for(int i=1;i<=6;i++){ //控制外层循环,一共有多少行,但是受到内层循环的影响
for(int j=1;j<=6-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
金字塔:
金字塔:
package day02;
/*
1.实现金字塔的图形,一样用for循环的嵌套,外层控制行数5行,内层for循环控制左边的空格数
2.在for循环输出每一个行的的*号,每一行的*号的规律是下一行比上一行多了2倍减1
*/
public class jinzita {
public static void main(String args[]){
for(int i=1;i<=6;i++){ //控制行数
for(int j=1;j<=6-i;j++){
System.out.print(" ");//控制左边的空格数
}
for(int k=1;k<=2*i-1;k++){
System.out.print("*");//按照规律,输出每行的*数
}
System.out.println();
}
}
}
实心菱形:
package day02;
/*
1.要打印实心菱形可以两个金字塔组合二起来,分为上半部分,下半部分。
2.上半部分可以直接用金字塔的代码,
3.下半部分:用for循环倒着写控制他的条件控制语句
*/
public class lingxing {
public static void main(String[] args) {
//上半部分
for (int i = 1; i <= 6; i++) {//控制行数
for (int j = 1; j <= 6 - i; j++) {
System.out.print(" "); //控制空格数
}
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
//下半部分
for (int i = 1; i <= 5; i++) {
for (int z = 1; z <= i; z++) {
System.out.print(" ");
}
for (int a = 1; a <= 2 * (5 - i) + 1; a++) { //寻找边界值
System.out.print("*");
}
System.out.println();
}
}
}
空心菱形:
package day02;
/*
1.打印空心菱形,也就是在实心的菱形上添加一个if else 语句判断要不要添加这个*号
2.添加的位置是在每个*的循环的最后以及开始。
*/
public class konxinglingxin {
public static void main(String[] args) {
//上半部分
for (int i = 1; i <= 6; i++) { //控制行数
for (int j = 1; j <= 6 - i; j++) { //控制每行的空格数
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) { //每行的个数2*i-1
if(k==1||k==2*i-1){ //判断*是不是在每行的第一个或者最后一个,不是的话就用空格
System.out.print("*");
}
else{
System.out.print(" ");
}
}
System.out.println();
}
//下半部分
for (int i = 1; i <= 5; i++) {
for (int z = 1; z <= i; z++) {
System.out.print(" ");
}
for (int a = 1; a <= 2 * (5 - i) + 1; a++) {
if(a==1||a==2 * (5 - i) + 1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
猜数:
package day02;
import java.util.Random;
import java.util.Scanner;
/*
随机产生一个 1-100 之间的数字,然后让玩家不断猜测,如果猜大,提示过大,如果猜小,提示过小,如果猜中则程序停止
1.new一个random的对像以及scanner的对象
2。将输入的值和随机数比较选择不同的结果。
3.用while循环不断循环,直到猜对了为止
*/
public class caiquan {
// public static void main(String[] args){
// int num=(int)(Math.random()*100);
// Scanner sr=new Scanner(System.in);
// System.out.println("请输入一个数字");
// int a=sr.nextInt();
// while(a!=num){
// if(a>num){
// System.out.println("您输入的数过高,请重新输入");
// a=sr.nextInt();
// }
// if(a<num) {
// System.out.println("您输入的数过小,请重新输入");
// a=sr.nextInt();
// }
// }
// if(a==num){
// System.out.println("您输入的数正确,真的太棒了!!");
// }
// }
// }
public static void main(String[] args) {
Random ra = new Random();
int r = ra.nextInt(100);
System.out.println("请输入数:");
Scanner scan = new Scanner(System.in);
int s = scan.nextInt();
while (r!=s) { //不断循环,直到猜对为止
if (r > s) {
System.out.println("恭喜你猜小了");
s = scan.nextInt(); //重新获取猜值,继续循环
} else if (r < s) {
System.out.println("恭喜你猜大了");
s = scan.nextInt();
}
}
if(r==s) {
System.out.println("猜对了");
}
}
}
求四位数的翻转数:
package day02;
/*
求一个四位数的翻转数:
1.先将四位数每一个数取值取模
2.重新运算,然后相加。
1.用while循环,循环内用不断取模,然后将输入的值/10;
*/
import java.util.Scanner;
public class fanzhuanshhu {
public static void main(String[] args){
System.out.println("请输入整数");
Scanner scan=new Scanner(System.in);
int num=scan.nextInt();
while(num!=0){ //当num被/10等于0跳出循环
int a=num%10;
System.out.print(a);
num=num/10;
}
}
}