首页 > 代码库 > JAVA-day01- 微机与程序的基本流程

JAVA-day01- 微机与程序的基本流程

/*

java的跨平台的原因:JVM

JVM:负责java程序的执行

JRE:java程序运行时的环境,包含了JVMa

JDK:开发工具包,包含了JRE

为什么在环境变量path中设置jdk的安装路径:为了在任何路径下都能使用bin目录下的可执行命令

java源程序:先编译成jvm可以执行的字节码,使用javac指令,再使用java指令执行字节码文件(必须是含有main方法的那个字节码文件)

标识符:26个字母,0-9_ $,不能以数字开头,不能和关键字同名

关键字:被java赋予的特殊含义的单词

常量:固定不变的量:字符串  整型  小数 布尔  字符  null

*/

class Demo
{
	public static void main(String[] args) //JVM运行的入口
	{
		System.out.println(66.66);
		System.out.println(66);
		System.out.println("hello");
		System.out.println(true);
		System.out.println('w');         
	}
}




import java.util.Scanner;
class Demo2 
{
	public static void main(String[] args) 
	{
		System.out.println(66);
		System.out.println(020);
		System.out.println(0x55);

		/*
         变量:存储程序中用到的数据
		       其存储的数可以改变
               变量只能存储一个数
		*/

		Scanner sc = new Scanner(System.in);
		System.out.println("输入第一个数");
		int a = sc.nextInt();

		System.out.println("输入第二个数");
		int c = sc.nextInt();
        System.out.println(a+c);



		int b;
		
	}
}


class Demo3 
{
	public static void main(String[] args) 
	{
		/*
			数据类型:决定变量所占内存空间的大小
			整型:byte 1个字节
			     short 2个字节
				 int   4个字节
				 long  8个字节
			浮点型:float  4
			       double 8

			 字符:char 2个字节  Unicode
			 布尔:boolean 1个字节
		*/

		int  a;  //整数默认看成int类型
		byte  b =60;
		short s = 3276;
		long c = 234354345435l;

		         // 小数默认看成double类型
		float f = 45.6f;
		double d = 34.45d;

		char ch = '好';
		char ch2 ='t';

		boolean boo = true;
		boolean boo2 = false;


	}
}


class Demo4 
{
	public static void main(String[] args) 
	{
		//数据类型的级别有高低之分:从低到高  byte char,short-->int-->long-->float-->double

		byte b = 127;//自动类型转换 00000000 00000000 00000000 00000110 内部会自动砍掉前三个字节  00000110=6 
                   //int --->byte
		System.out.println(b);

		byte a = 34;
		int c = 45;
		float f =34.5f;
		double d = 56.7;

		double sum = a+c+f+d;//通常从低级别转到高级别,会自动转



		byte z =(byte)(b+10);//高级别到低级别--通常需要强制类型转换
		                     //00000000 00000000 00000000 10001001  --->10001001--> 01110111=119
		System.out.println(z);


		int m = 'a';
		System.out.println(m);//ASCII

		char ch = 97;
		System.out.println(ch);
        
		System.out.println((char)5);
	}
}




class  Demo5
{
	public static void main(String[] args) 
	{
		//转义字符: 通过'\'改变后边所跟字符的含义  \t

		//System.out.println("\"Hello\" \n \'World!\'");

		//Windows系统下的换行:\r\n  Unix  Linx \n



		//字符串和任何类型的数据相连接,最终都是字符串

		int a = 97;

		System.out.println("haha"+a+a);//+是连接符号

		System.out.println("haha"+(a+a));

		System.out.println("a="+a+"woeiurio");



	}
}

class Demo6 
{
	public static void main(String[] args) 
	{
		System.out.println(5/2);
		System.out.println(-5%9);//结果的正负由被除数决定

        int m = 3,n;

		//m++;//m = m+1;
		//System.out.println("m="+m);

		//n = m++;//++在后边儿,先取m的值赋给左边的变量,再m的值自增1,
		n = ++m;//++在前边儿,m的值先自增1,再赋给左边的变量
		System.out.println("m="+m+",n="+n);

		int a = 135;

		System.out.println(a%10+a/10%10+a/100);

		//+= -+  *=  /+  %=  =

	    m+=4;//m=m+4;

		short s = 5;
		//s = s+3;//编译不通过
		s+=3;//编译通过,内部做了自动转换
		System.out.println("s="+s);

		//关系运算符: >  >=  <  <=  ==  !=  关系只有两种可能:成立:true  不成立:false

		int x = 34,y=56;

		System.out.println(x>y);
		System.out.println(x!=y);

		//逻辑运算符: && 并且  ||  或者

		int yu =67,math =89;

		System.out.println(yu>80 && math>80);
		/*
		true && true  =true
		true && false = false
		false && true  = false
		false && false = false

		*/

       System.out.println(yu>60 || math>80);
	   /*
        true || true  =true
		true || false = true
		false || true  = true
		false || false = false
	   */

	   System.out.println(!(yu>89));

       //  &&:短路与:如果左边的表达式为假了,就不再计算右边的表达式了  & 不管左边的是真是假都会计算右边的表达式
	   //  ||:短路或: 如果左边的表达式为真了,就不再计算右边的表达式了  | 不管左边的是真是假都会计算右边的表达式


		System.out.println(6|2);


		//三元运算符:  ?  :

		int c  = 5>6?1:2;

		System.out.println(c);


	}
}




/*
		1.最有效率的方式算出2乘以8等于几?2*8

		2.对两个整数变量的值进行互换(不需要第三方变量)

		3.有三个整数,获取最大值,通过三元运算符完成。

        4:将一个十进制数转成十六进制(使用位运算符)

       */

class  Demo7
{
	public static void main(String[] args) 
	{
		//1.最有效率的方式算出2乘以8等于几?2*8
	    /*
           0010
		   1000
		  -------

		*/
		//System.out.println(2<<3);
      // 2.对两个整数变量的值进行互换(不需要第三方变量)

	  int a = 5,b = 6;
	  /*
	  a = a+b;//a和b的和可能溢出
	  b = a-b;
	  a = a-b;

	  a = a^b;
	  b = a^b;//a^b^b  
	  a = a^b;//a^b^a

	  //使用第三方变量
	  int c;
	  c = a;
	  a = b;
	  b = c;

	  System.out.println("a="+a+",b="+b);

	  //3.有三个整数,获取最大值,通过三元运算符完成。

	  int x = 123,y = 45,z = 678;

	  int m = x>y?x:y;

	  int max =m>z?m:z;
	  System.out.println("max="+max);*/

	  // 4:将一个十进制数转成十六进制(使用位运算符)

	  int num = 60;
	  int n1 = num&15;
	  

	  num = num>>>4;
	  System.out.print(num);
	  if(n1>9)
	  System.out.print((char)(n1-10+'a'));

	}
}


//System.out.println();


class Demo8 
{
	public static void main(String[] args) 
	{
		int a = 4;
		/*
		if(a>1)
		{
			System.out.println("Hello World!");
		    System.out.println("haha");
		}
		else
		{
			System.out.println("heihei");
		    System.out.println("heihei2");
		}
        */

		if(a<-1)
			if(a<-5)
				System.out.println("heihei");
	    else
			    System.out.println("hehe");

		//else总是和距离他最近的且没有对应的else的if对应

        if(a>1)
			System.out.println("a>1");

		if(a>2)
			System.out.println("a>2");

		if(a>3)
			System.out.println("a>3");



        //多重条件判断结构
		if(a>1)
			System.out.println("a>1");
		else if(a>2)
			System.out.println("a>2");
		else if(a>3)
			System.out.println("a>3");
		else 
			System.out.println("无效");
		


		




	}
}


//需求1:根据用户定义的数值不同。打印对应的星期。
//需求2:根据用于指定月份,打印该月份所属的季节。
//3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季
class  Demo9
{
	public static void main(String[] args) 
	{
		int week = 3;

		if(week==1)
			System.out.println("星期一");
		else if(week==2)
			System.out.println("星期二");
		else if(week==3)
			System.out.println("星期3");
		else if(week==4)
			System.out.println("星期4");
		else if(week==5)
			System.out.println("星期5");
		else if(week==6)
			System.out.println("星期6");
		else if(week==7)
			System.out.println("星期日");
		else
			System.out.println("无效");


		//需求2:根据用户指定月份,打印该月份所属的季节。
        //3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季

		int month = 11;
		if(month>=3 && month<=5)
			System.out.println("春季");
		else if(month>=6 && month<=8)
			System.out.println("夏季");
		else if(month>=9 && month<=11)
			System.out.println("秋季");
		else if(month==12 || month ==1 || month==2)
			System.out.println("冬季");
		else
			System.out.println("无效");

		//其它写法
		if(month<1 || month>12)
			System.out.println("无效");
		else if(month>=3 && month<=5)
			System.out.println("春季");
		else if(month>=6 && month<=8)
			System.out.println("夏季");
		else if(month>=9 && month<=11)
			System.out.println("秋季");
		else
            System.out.println("冬季");



	}
}
/*
switch语句
格式:
switch(表达式)
{
	case 取值1:
		执行语句;
		break;
	case 取值2:
		执行语句;
		break;
	…...
	default:
		执行语句;
		break;
}

*/

class  Demo10
{
	public static void main(String[] args) 
	{
		int a =6;
        //遇到break或结束的大括号才会停止执行
		switch(a)//byte short int char  jdk1.5(枚举) jdk1.7 字符串
 		{
			default:
				System.out.println("0");
			case 1:
				System.out.println("1");
			case 2:
				System.out.println("2");
			case 3:
				System.out.println("3");break;
			case 4:
				System.out.println("4");
		}




		//需求2:根据用户指定月份,打印该月份所属的季节。
        //3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季

		int month = 11;
		switch(month)
		{
			case 3:
			case 4:
			case 5:System.out.println("春季");break;

			case 6:
			case 7:
			case 8:System.out.println("夏季");break;

			case 9:
			case 10:
			case 11:System.out.println("秋季");break;

			case 12:
			case 1:
			case 2:System.out.println("冬季");break;

            default:
				   System.out.println("无效");break;
		}

		//如果表达式的值是布尔类型或者是某一个范围中的数,就只能使用if结构
		//如果表达式的值是一个确定的值,并且在byte short int char这几种数据类型之中,则使用 switch比较好


		//实现一个四则运算
		int a = 23,b = 4;
        char ch = '*';
		switch(ch)
        {
			case '+':System.out.println(a+b);break;
			case '-':System.out.println(a-b);break;
			case '*':System.out.println(a*b);break;
			case '/':System.out.println(a/b);break;
            default:
				System.out.println("无效");break;
		}
	}
}


/*
循环结构:执行相同的或具有特定规律的功能

while(循环条件)
{
	需要重复执行的代码----循环体
}

do
{
	
	需要重复执行的代码---循环体

}while(循环条件);
*/
class  Demo11
{
	public static void main(String[] args) 
	{
		int i=6;

        while(i<=5)
		{
		   System.out.println("Hello World!");
		   i++;
		}
        //先判断条件,如果条件为真,则执行循环体一次,再回去判断条件,如果条件还为真,再执行循环体一次,
		//  如此反复,直到条件为假,循环结束

       int j =6;
	   do
	   {
		   System.out.println("Hello World!");
		   j++;
	   }while(j<=5);

	   //限执行循环体一次,再判断条件是否为真,如果条件为真,再执行循环体,直到条件为假,循环结束
	   

       //do{}while();会至少执行循环体一次,while(){}当条件一开始就为假时,循环一次都不执行

	}
}



/*
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
	执行语句;
}
*/
class Demo12 
{
	public static void main(String[] args) 
	{
		for(int i=1;i<=5;i++)
		{
		    System.out.println("Hello World!");
		}

		//先执行表达式1,再判断条件,如果条件为真,执行循环体,再执行表达式3,再判断条件,如果条件为真,再执行循环体
		//再执行表达式3,再判断条件,直到条件为假,结束

       System.out.println(i);//找不到符号


		int j=1;
        while(j<=5)
		{
		   System.out.println("Hello World!");
		   j++;
		}
		System.out.println(j);

		 //变量使用作用范围的(作用域):从变量被定义的位置开始,到变量所在的大括号结束 
         //循环中使用的变量在循环结束后如果不再使用,适合使用for循环(节省内存),否则适合选择while()或do{}while();

		
	}
}



class Demo13 
{
	public static void main(String[] args) 
	{
		//省略表达式1
        int i=1;
		for(;i<=5;i++)
		{
		   System.out.println("Hello World!");
		}

		//省略表达式2 ----死循环
		for(int i=1;;i++)
		{
			System.out.println("Hello World!");
		}

        //省略表达式3
		for(int i=1;i<=5;)
		{
			System.out.println("Hello World!");
			i++;
		}

		//三个表达式都省略
		for(;;)//---死循环
		{
		
		}

	}
}



以下为作业以及我的解答。太简单的我就不做了!

1.计算 n+(n-1)+(n-2)+....+3+2+1的值

问题:计算级数 n+(n-1)+(n-2)+....+3+2+1的值,其中n的值由用户输入,
例如:如果输入的数是8,则计算8+7+6+5+4+3+2+1的值,计算结果应该是36


import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner in= new Scanner(System.in);
	   int i= in.nextInt();
	   int count=0;
	   for(int j=i;j>=1;j--)
	   {
		 count+=j;
	   }
	   System.out.println(count);
}
}


2.计算正整数各位数的和
问题:编写一个程序,让用户输入一个正整数值,然后计算该数各位数的和,
例如:如果输入的数是123,则计算结果是6

import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int i = in.nextInt();
		int result = 0;
		while (i > 0) {
			int shuzi = i % 10;
			i = i / 10;
			result += shuzi;
		}
		System.out.println(result);

	}
}


3.求一个数的阶乘 例如: 5! 5*4*3*2*1 0!==1
import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int result = 1;
		for (int i = 1; i <= x; i++) {
			result *= i;
		}
		System.out.println(result);

	}
}


4.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int y = x;
		int count = in.nextInt();
		int result = 0;
		for (int i = 1; i < count; i++) {
			x = x * 10 + y;

			System.out.println(x);
			result = result + x;
		}
		System.out.println(result + y);

	}
}


5.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		double x = 2;
		double y = 1;
		double result = 0;
		for (int i = 0; i < 5; i++) {
			System.out.println(x / y);
			result = result + x / y;
			x = x + y;
			y = x - y;

		}
		System.out.println(result);
	}
}


6.根据要求显示字符
问题:编写一个程序,用于接收用户输入的数,然后显示从0到该数为止表示的所有字符,
询问用户是否愿意再次继续同样的过程


7.编写一个程序,根据输入某个班级学员的成绩,计算该班级学员的平均成绩,
班级的人数要求用户输入,根据输入的人数,分别录入学员的成绩,计算该
班级学员的平均成绩,并显示计算结果,最后询问用户是否继续,
直到用户自己确定要结束程序退出




1:编写一个程序,用于生成如图所示的输出结果,要求根据用户输入的一个整数,
输出一个数字组成的图案
例如:
55555
4444
333
22
1


1
22
333
4444
55555
2.打印一个实心菱形图案
   *
  ***
 *****
*******
 *****
  ***
   *


3.打印一个空心菱形图案
  问题:用*号打印一个如下的空心菱形图案 :


                   *
                  * *
                 *   *
                *     *
                 *   *
                  * *
                   *
                   
4:求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!


1,
import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner in= new Scanner(System.in);
		int x=in.nextInt();
     for(int i=x;i>0;i--)
     {
    	for(int j=i;j>0;j--)
    	{
    		System.out.print(i);
    	}
    	System.out.println();
     }
     
     for(int i=1;i<=x;i++)
     {
    	 for(int j=i;j>=1;j--)
    	 {
    		 System.out.print(i);
    	 }
    	 System.out.println();
     }

}
}


2,
import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

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

			System.out.println();
		}
	
		for (int i = 3; i >= 1; i--) {
			for(int x=i;x<=3;x++)
			{
				System.out.print("  ");
			}
			for (int j = i * 2 - 1; j >= 1; j--) {
				System.out.print("*");
			}
			System.out.println();
		}

	}
}


3,

import java.text.DecimalFormat;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		int x = 1;
		int count = 0;
		for (int i = 1; i <= 10; i++) {
			for (int j = 1; j <= i; j++) {
				x *= j;
			}
			count += x;
		}
		System.out.println(count);
	}
}



JAVA-day01- 微机与程序的基本流程