/*
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);
}
}