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);
	}
}
时间: 2024-09-30 08:44:02

JAVA-day01- 微机与程序的基本流程的相关文章

Java语言中的程序流程控制

(1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择  :   a. if / else 语句 b. switch语句 c. 三目运算 C.循环   :a. while 循环 b. for 循环 c. do / while 循环 注:所有的控制结构都包含了某种类型的布尔判断 (2. 布尔逻辑(布尔值:true, false) 在组合布尔表达式时,有四种类型的逻辑: A. 和(&&):每个表达式都为真时. B.

php程序的三大流程控制

php程序的三大流程控制 ①  顺序控制(从上到下,从左到右) ②分支控制 if(条件表达式){ //n多语句 }else if (条件表达式){ //n 多语句 }else if(条件表示式){ //. }//这里可能还有更多的else if else{ } u  switch分支语句 基本语法结构 switch(表达式){   case 常量1: //n多语句; break; case 常量2: //n多语句 break; default:    //n多语句;        break;

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL.处置url的最大数.要查找的字符串), 它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面. 这个程序的原型来自<java编程艺术>, 为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5.以这个程序为基础,可以写出在互联网上查找 比如图像.邮件.页面下载之类的"爬虫". 先请看程序运转的进程: D:\java>javac  SearchCrawler

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

【Java】对服务器程序的理解

Login:------------->方法 Data:----->类.API数据 Collection:-------->集合 Data Source File: Database: Networking:------->java.net/javax.net Web Service: Stream [Java]对服务器程序的理解,布布扣,bubuko.com

【黑马程序员】————流程控制

一.  流程控制 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 循环结构:在给定条件成立的情况下,反复执行某一段代码. 二.      选择结构-if 简单使用 1.if的第1种结构 1 if(条件) 2 { 3 语句1; 4 语句2; 5 ...... 6 } 2.if的第2种结构 1 if(条件1) 2 { 3 语句1; 4 语句2; 5 ...... 6 } 7 else 8 { 9 10 } 11 3.if的

程序的编译流程

程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同. 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理 ①将所有的"#define"删除,并且展开所有的宏定义 ②处理所有的条件编译指令,如:"#if"."#ifdef"."#elif"."#el

我为什么要录制Java Swing桌面应用程序开发课程

首先在我从事Swing编程的几年中我听到过各种奇谈怪论.大致意思就是Swing桌面软件不合适.我只能呵呵.一个人能力有高低.对事物的看法有不同,都可以接受.但是把无知当个性只能说你太勇敢了.尽管甲骨文如今力推JavaFX.但是Swing还是目前Java桌面开发的主流技术. 本人从事Java语言编程超过11年.其中有五年左右的时间是在从事Java Swing桌面应用程序开发.其它几年是在从事J2EE与spring3 MVC开发,结合自身实践感慨颇多,感觉自己技术进步最大最快的几年恰恰是从事J2SE

java 书籍推荐 JavaEE程序员必读图书大推荐

java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给您推荐的一些图书: 第一部分: Java语言篇 1 <Java编程规范> 星级: 适合对象:初级,中级 介绍:作者James Gosling(Java之父),所以这本书我觉得你怎么也得读一下.对基础讲解的很不错. 2 <Java核心技术:卷Ⅰ基础知识> 星级: 适合对象:初级,中级 介

将java开发的wordcount程序部署到spark集群上运行

1 package cn.spark.study.core; 2 3 import java.util.Arrays; 4 5 import org.apache.spark.SparkConf; 6 import org.apache.spark.api.java.JavaPairRDD; 7 import org.apache.spark.api.java.JavaRDD; 8 import org.apache.spark.api.java.JavaSparkContext; 9 impo