java赋值计算结束输出语句,02Java的基本语法

1、常量与变量

程序执行中值不会变化的为常量,会变化的为变量。如定义一个常量PI,表示圆周率,圆周率不会改变;定义一个变量stuNo,表示学号,学号则会根据学生的改变而相应的改变。

2、Java中的标识符

标识符是用来给类,变量、常量进行取名字的符号。定义标识符具有一定的规则,规则如下:

大小写敏感;

支持字母数字下划线及$;

数字不能放在首位,即不能做首字符;

长度无限制;

不能是Java关键字;

支持中文,但不建议;

所有类的类名已经是标识符(String)。

同时,对标识符也具有一定的命名规范,针对不同的Java标识符,其规范不尽相同:

类名,接口名:每个单词的首字母应该大写,尤其第一个单词的首字母应该大写。(驼峰规则)。如class HelloWorld,Interface Animal

方法、属性、变量::第一个单词首字母应小写,其他单词首字母大写。如String empNo;void setName(String name);

常量:全部用大写字母表示。如果由几个单词组成,则由下画线连接。public final int  PI;public final int HEAD_COUNT;

包: 全部用小写字母。如:package cn.onlylove.domain

c2d462b5946d

标识符示例

3、Java中的关键字

3个保留字:true,false,null

50个关键字。

4、Java中的注释

良好的编程规范中,注释必须写上,以便其他人阅读、引用和维护。

单行注释  //...

多行注释  /* ....*/,多行注释不支持嵌套。

文档注释  /** ... */

可以通过使用JDK的javadoc工具从原文件中将文档注释抽取出来,从而形成帮助文档。如JDK的API文档。

5、Java中的注释

Java是一种强类型语言,意思是说在程序的开发过程中,如果要使用某个变量,必须先对该变量进行声明。Java中对变量的声明,需要使用相应的数据类型,Java中数据类型分为2种:基本数据类型与引用数据类型。

首先看一下Java中的引用类型。所有的类,所有的接口,所有的数组,枚举,标注。都是引用类型。

基本数据类型总计8种,按照存储的是字符、整数、浮点数、布尔值分为4类。如下图所示:

c2d462b5946d

Java基本数据类型

-->布尔型boolean

java中boolean只有true和false两个值,代表真和假。定义方法如下:

boolean isExist=true;

对一个变量进行第一次赋值的操作叫作对变量的初始化。

boolean的作用:

1、作为条件判断

2、只有两种状态的时候作为条件的区分。

-->字符型char

字符类型用来存储单个字符,占用16位2个字节的内存空间,因为char类型占用16位,因而其至多可以定义2的16次方个字符, 同时因为其也是占用两个字节,因此也可以将单个中文汉字定义为char类型。对char类型的变量进行初始化时需要在其值的两边用单引号括起来,定义方法如下:

char a=’a’;//正确

char a=’你’;

char a=’ab’;//错误

也可以将0-65535范围内的整数定义为char变量,JVM将根据ASCII码转换为对应的字符。

char a=97;//如果输出,将输出字符a

-->整数型

了解整数类型之前,先需要了解计算机中的各类数字进制表现形式:

二进制:只有1和0两个值

八进制:0开头。由0-7表示。

十进制:正常显示,即日常使用的数字类型。不能以0开头(0除外)。

十六进制:0x或者0X开头。0-9由数字表示,10-15由a-f表示。

进制间的转换:

学会各类进制与十进制之间的转换,则各种之间也就明了了。

二进制与十进制的转换。

二进制111则表示为1*22+1*21+1*20=4+2+1=7(2的平方,2的1次方,2的0次方)

八进制与十进制的转换。

八进制01011=1*83+0*82+1*81+1*80=512+0+8+1=521(8的立方,8的平方,8的1次方,8的0次方)

八进制031=3*81+1*80=25(8的1次方,8的0次方)

十六进制与十进制的转换

十六进制0X25=2*161+5*160=32+5=37(16的1次方,16的0次方)

十六进制0Xb01e=b(11)*163+0*162+1*161+e(14)*160=45056+0+16+14=45086

重点只要会二进制与十进制互转即可。

网上有个段子,说是一个程序员522那天送花给女朋友,被拒绝了。通过心算后得出

522=5*16平方+2*16的1次方+2*16的0次方=1280+32+2=1314得出522是程序员的情人节。之后把花扔了,觉得女方配不上这么聪明的男人。

整数型数据类型根据所占内存大小不同分为byte,short,int,long。(在内存中的二进制表示时所有的第一位均做符号位 1负0正)。在代码中,整数型的默认类型是int,浮点型默认类型是double。

负数的二进制表示法:

原码,反码,补码。

-5如何表示?

5的二进制为:0000 0000 0000 0000 0000 0000 0000 0101,此为原码。

其反码为:1111 1111 1111 1111 1111 1111 1111 1010,此为反码。

补码为反码+1:1111 1111 1111 1111 1111 1111 1111 1011。这就是-5。

负数的表示即为对应的补码。

byte 8位;表示2的8次方个数:负2的7次方到正2的7次方减1

short 16位;  同上

int 32位 ;同上

long  64位;  同上

由于相应的数据类型只能取相应范围内的数值,因此,在定义变量并初始化时,若变量取值超出其相应范围,则会发生报错或者发生相应的强制类型转换。看如下代码

byte b=12;

byteb2=129;//false(超过范围)byte最大为127

char c1='a';

String s="a";

int i1=c1;//char 既能当字符也能当数字。

inti2=s;//false

String不能当数字用,因为它是一个引用,是个地址。

int i3=20;

b=i3;//false 变量和常量的区别。不能保证i3在byte范围内,因为i3可能会有改变,20永远是20,i3不一定。

--> 浮点型

float 32位

double 64位。

二者都是近似值。

单精度

float f=1.0//错误,默认为double

双精度。

二者的取值范围和精度是不同的 float的精度是6位有效数字,取值范围是10的-38次方到10的38次方,float占用4字节空间 double的精度是15位有效数字,取值范围是10的-308次方到10的308次方,double占用8字节空间。

--> 基本数据类型强制类型转换

double d1=1.0;

double d2=0.54;

float f;

f=(float)(d1-d2);

用于解决上面的问题。但仍然不要超过各类型的范围。上面成功的是自动类型转换。

所谓自动类型转换:

1、整数之间,小范围向大范围自动转换。

2、整数向浮点自动转。

3、范围以内的常数自动转。

问题:如下将输出什么?

byte b=(byte)128;

System.out.println(b);

答案:-127,为什么?

c2d462b5946d

大类型转小类型时将截断

Java中数字默认为Int类型,占32位。因此,在内存中128是如下表示:

0000 0000 0000 0000 0000 0000 1000 0000

在将128转换为byte类型时,只占8位。在内存中为

1000 0000 即为-127。

强制类型转换时,只截取当前位数内的字符进行截取。

6、运算符

-->赋值运算:=可以引申出来+=,-=,*=等等,。

int a = 5;

int b = 2;

double d = 5;

double d2= 5.1;

int i=10;

i+=3*5;//i=25,先计算右边,再与左边进行赋值运算

byte b1 = 2;

byte b2 = 3;

b1 += b2;// 赋值语句

b1 = (byte) (b1 + b2);// java把关于byte

short的运算都转成int以后再进行运算

练习:用Scanner输入一个秒级数字,将其转换成X小时X分X秒

Scanner sc=newScanner(System.in);

int time=sc.nextInt();

int h=time/3600;

int m=time%3600/60;

int s=time%3600%60;

System.out.println(h+"小时"+m+"分"+s+"秒");

sc.close();

-->算术运算符:+ = * / %

System.out.println(a+b);//7

System.out.println(b-d);//-3.0

System.out.println(a * b);//10

System.out.println(d / b);//2.5

System.out.println(d2 % b);//1.09999

System.out.println(d % b);//1.0

-->比较运算符:>>=<<===!=。

int a=10;

int b=20;

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

System.out.println("a>b:"+(a>b));//false

System.out.println("a=b:"+(a==b));//false

System.out.println("a

System.out.println("a!=b:"+(a!=b));//true

-->逻辑运算符:

短路运算:(且&&  或||),非短路运算:(且& 或 |)

短路运算中,当前面的一个表达式可以决定结果时,后面的语句将不再执行,非短路运算会继续判断后面的。因而短路运算其效率高于非短路运算。

int a=10;

int b=20;

boolean flag1=((a=5)>12)&&((b=3)>9);

System.out.println("flag1:"+flag1);//false

System.out.println(a);//5

System.out.println(b);//20,表明&&后面未执行

int a=10;

int b=20;

boolean flag1=((a=5)>12)&((b=3)>9);

System.out.println("flag1:"+flag1);//false

System.out.println(a);//5

System.out.println(b);//3,表明&后面的也执行了

-->位运算:& | ^

&(AND)|(OR) ^(XOR异或) ~(补码)按位取反=加1再取反(全1的补码是-1)。只要掌握好负数的内在占位情况就好计算。

int a=5&-4;//将5与-4进行与运算。

System.out.println(a);//4

//内存中格式为:

//5是      0000 00000000 0000 0000 0000 0000 0101

//-4是   1111 1111 11111111 1111 1111 1111 1100

//&结果  0000 0000 0000 0000 0000 0000 0000 0100

-->移位运算:

>>右移:全部向右移动,移到右段的低位被舍弃,最高位则移入原来最高位的值。右移N位相当于除以2n。

>>>无符号右移:同上,只是最高位变成0.因此负数的移位与>>有区别,正数与>>无区别。

<

移位运算一般而言都是int类型(默认类型),因此,当移位位数超过32位时,取对32的求余即可。Java中默认理解为超过32位的移位无意义。

System.out.println(7 >> 2);

//00000111-->00000001  相当于7/(2*2)=1

System.out.println(7 >> 34);

// java移位时,先将移位数%32,此处34%32=2。由相当于7>>2

System.out.println(7 >> -30);

// 负数次数时,先加上32倍数,转成正数以后才移位

System.out.println(-7 >> 2);// -2

//负数的高位仍然是1

//1111 1111 1111 1111 1111 1111 1111 1001

//右移2位变成 1111 1111 1111 1111 1111 1111 1111 1110为-2

System.out.println(-7 >>> 2);

//无符号右移,最高位补为0

//右移2位,最高位补为0   0011 1111 1111 1111 1111 1111 1111 1110为1073741822

-->自增、自减运算 ++ --

++ 变量自增

--变量自减

i++相当于i=i;i+1;

++i相当于i=i+1;

int i = 2;

System.out.println(i++);//2

System.out.println(i);//3

int b = i++ + ++i;//3+5

System.out.println(b);//8

for(int j=0;j<10;j++){

i = i++;//i++;i=5;

}

System.out.println(i);//5

-->三目运算 ?:

int a = 3;

double b = 5.0;

//可以转换类型的就转换成同一类型

System.out.println((a>b)?b:a);//3.0

//不可以转换类型的就保持原有类型

System.out.println((a>b)?"ok":a);//3,早期版本可能不支持如此写法。

-->运算符的优先级:

=最低,其余根据需要添加相应的括号()即可。()最高。

7、控制语句

If(){}else{}

If(){}else if(){}

If(){……if(){}……}

int a = 3;

int b = 5;

if(a>b){//分支{}如果只有一个语句{}可以省略,但不建议。

System.out.println("a大");

}else if(a

System.out.println("b大");

}else{

System.out.println("a b相等");

}

三重以上的选择时,建议使用switch进行判断。

switch(变量){//变量类型固定:byte,short,char,int,enum,String.其中enum须在jdk5.0及以上,Sting需要jdk1.7以上。

case:break; //每一个case后面跟一个有限值,后面再跟语句,最后跟一个break;用break跳出语句。

default: //其它值,不在case中的任何一个。

}//有限的值(case)加上一个default;default如果放在最后,就不要加break;如果放在其它位置,则要加break;case后的值必须是常量。

//最后一个分支可以不加 break;除此之外其它的都要加break;

Scannersc = new Scanner(System.in);

System.out.println("请输入您的分数");

int y = sc.nextInt();

switch (y) {

case 5:

System.out.println("优");

break;

case 4:

System.out.println("良");

break;

case 3:

System.out.println("及格");

break;

case 2: // System.out.println("不及格"); break;

case 1:

System.out.println("重修");

break;

default:

System.out.println("输入错误");

break;

}

sc.close();

8、循环语句

程序执行到控制语句时,会有多个选择,选择哪一个取决于选择条件,选择完成后只会执行某一个条件下的语句,但循环是不一样的。

循环:反复做同一件事情的时候,如,打印1-10000;找出1-10000里面所有的奇数。

for/while/do while其中for/while是等价的。do while不同。

-->for

for( ; ; ){}小括号内是三段论,第一段循环变量(用于控制循环次数的变量)的声明和初始化。第二段放条件,第三段放循环变量的变化。大括号内书写循环体(反复执行的语句);

for (int i = 1; i <= 10; i++) {

System.out.println("i=" + i);

}

死循环:按中止按钮或者在控制台中按ctrl+c,或者ctrl+d结束循环。for(;;)

循环次数不定的循环:for(;;){循环语句; if(条件){break;}}。break可以跳出循环:

Scannersc=new Scanner(System.in);

for(;;){

Stringstr=sc.next();

if(str.equals("bye")) break;

System.out.println("你说:"+str);

}

//break后到这里,已经跳出循环。

sc.close();

练习

1、用两种方式输出1-100内的奇数。

2、做一个猜数据的小游戏,生成1-100的随机数,然后猜,用键盘输入int,提示输入的数字是更大还是更小,如果猜对就输出猜对了,并输出猜了几次并退出程式。

3、打印一个图形,如下所示:

*

**

***

****

*****

4、打印一个图形,第一行一个*,第二行3个*,第三行5个星,打印几行由系统输入决定。

5、打印1-100里面的所有质数,所谓质数,即只可以被1和其本身整除的数字。

6、打印九九乘法表。

7、有36人,36块砖,男人每人能搬4块,女人每人搬3块,小孩2人搬一块,要求一次把所有的砖搬走。三类人都需要的前提下,问几个男人,几个女人,几个小孩?

Random rand=new Random();

int num=rand.nextInt(100)+1;

Scannersc=new Scanner(System.in);

int count=0;

for(;;) {

count++;//每进入一次循环,则统计一遍次数.

System.out.println("请输入一个数字:");

int guess=sc.nextInt();

//通过比较,判断所猜数字是否与系统数字一致

if(guess

System.out.println("小了");

}else if(guess>num) {

System.out.println("大了");

}else {

System.out.println("恭喜你,猜对了!总共猜了"+count+"次!");

if(count<5) {

System.out.println("你可以去买彩票了!");

}

break;//猜对后,结束循环退出程序.

}

}

sc.close();

-->break与continue的区别

break结束当前循环,continue结束当前这个变量所在的循环,继续下一变量的判断。

as: for (int i = 1; i <= 9; i++) {

for (int j = 1; j <= i; j++) {

if (i * j % 12 == 0) {

continue;//i*j=12的倍数时,不打印,继续下一循环。

}

if (i * j % 28 == 0) {

break;//i*j=28的位数时,退出当前里面的这个for循环

}

if (i * j % 32 == 0) {

break as;//退出整个循环

}

System.out.print(j + "*" + i + "=" + (i * j) + "  ");

}

System.out.println();//一个小循环,则换一行

}

}

-->while

while(条件){循环语句;循环变量变化;}

int i = 0;

//打印100以内的奇数

while (i < 101) {

if (i % 2 != 0)

System.out.print(i + " ");

i++;

}

while死循环:while(true){循环语句;}

次数不确定的while循环:while(true){循环语句;if(条件) break;}

do…while:do {循环体;循环变量变化;}while(true);此种循环循环体至少执行一次,无论条件是否满足。

int i = 1;

do {

System.out.println(i);

i++;

}while (i < 0);

System.out.println("*********");

for (int j = 1; j < 0; j++) {

System.out.println(j);

}

练习:

1、给定一个整数,将其反向输出,如给定1234,则输出4321.

2、打出空心菱形。

3、打印空形矩形。

4、打印空心三角形。

5、打一条内三角形。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值