初识Java第一课——结构与规则

AFD2071D-23A2-41CF-93B5-438049349749.png

一个完整的Java程序由三部分组成

源文件(扩展名为*.java):源文件带有类的定义,类用来表示程序的一个组件,小程序或许只会有一个类,类的内容必须包含在花括号里面。

:类中带有一个或多个方法,方法必须在类的内部声明。

方法:在方法的花括号中编写方法应该执行的语句。

注:类存在于源文件中;方法存在于类中;语句存在于方法中

IMG_0340.PNG


运行Java的前提条件

JRE(Java Runtime Environment):Java运行环境,包含了JVM,Java基础类库,是使用Java语言编写程序运行的所需环境。

JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了

Jre,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

Java程序运行的两个阶段:

编译:javac命令

命令:java命令


数据类型与运算符

1.变量和类型

变量:程序运行时可变的量,相当于开闭一块内存空间来保存一些数据

类型:对变量的种类进行了划分,不同的类型的变量具有不同的特性

4OZOB$96$4EAW1R8X$9]]6P.png

冯诺依曼体系

 

IMG_0342.PNG

 


变量命名规则

硬性指标:

1.一个变量名只能包含数字、字母、下划线

2.数字不能开头

3.变量名是大小写敏感的,即num和Num是两个不同的变量

注意:虽然语法上也允许使用中文/美元符($)命名变量,但是强烈不推荐这样做

软性指标:

1.变量命名要具有描述性,简名如意

2.变量名不宜使用拼音(但不绝对)

3.变量名的词性推荐使用名词

4.推荐小驼峰命名法(maxValue)

 

Final关键字修饰的常量

final int定义静态变量,不可修改


类型转换

隐式类型转换:容量小的自动转换为容量大的(byte—>short—>int—>long

强制类型转换:可以转换但是可能会导致精度丢失

Int a = 0;

Double b = 10.5;

A = (int)b;//先进行类型转换,后赋值。所以如果超过被转类型取值范围则进入类型的循环

注意:boolean拒绝任何类型转换


数值提升

整数运算法则:

有long则long

无long,则int,都无才short,byte

两数有一double,则double

两数全float,结果才是float

byte与byte,整块取出(对于short、byte这种比四个字节小的类型,会先提升成四个字节的int,再运算)

 

取余运算%:规定余数符号与左操作数一致


运算符

算数运算符:+ - * / %

增量赋值运算: += -= *= /= %=

自增自减运算符: ++ —(特例:a = a++)

关系运算符:==  !=  <  >  <=  >=

逻辑运算符: &&   ||  !

逻辑与&&:全1则1,否则为0

逻辑或||:全0则0,否则为1

逻辑非!:是1则0,是0则1

 

位运算符: & | ~ ^

按二进制位运算,对整形时表按位运算,对boolean时表逻辑运算

按位与&:二进制对位都1则1,否则为0

按位或:二进制对位都0则0,否则为1

按位取反:是0则1,是1则0

按位异或^:二进制对位相同则0,否则为1

注意:

1.0x前缀的数字为十六进制数字(一个十六进制数字对应4个二进制位)

2.0xf表示10禁止的15,也就是二进制的1111

3.printf能够格式化输出内容,%x表示按照十六进制数出

扩展:Java中一般情况下使用System.out.println(...);//printfln表输出完换行

            同时也存在System.out.printf("%d",a);//表示格式化输出,也就是C语言中的输出模式

System.out.print(...);//表示直接输出不换行

 

String与int:

int到String

方法一:

String str = num + “”;

方法二:

String str = String.valueof(num);

String到int

int num = Integer.parseInt(str);//要求string定义的字符串对于int合法!!

 

 

移位运算(了解)

移位运算符:>> << >>>

移位运算是按照二进制对位来运算的,可以理解为直接向右/左推位,空缺用0/1来填补

左移<<:最左侧位不要了,最右侧补0

int a = 0x10;

System.out.printf("%x\n",a<<1);

//运行结果为20(%x是按十六进制打印的)

 

右移>>:最右侧为不要了,最左侧补符号位(正数补0,负数补1)

int a = 0x10;

System.out,printf("%x\n",a>>1);

//运行结果8

int b = 0xffff0000;

System.out,printf("%x\n",b>>1);

//运行结果ffff8000

 

无符号右移>>>:最右侧位不要了,左侧补0(不适用于负数,不存在无符号左移)

int a = 0xffffffff;

System.out,printf("%x\n",a>>>1);

//运行结果7ffffffff

 

注意:

1.计算机计算移位效率高于直接乘除,所以可以在代码中正好乘除2的N次方时使用移位运算

2.移动负数或者移位位数过大都没有意义

3.不存在无符号左移

 

条件运算符

三目运算符:

表达式1?表达式2:表达式3;

相当于

if(表达式1){

表达式2;

}

else{

表达式3;

}

 

运算符优先级

原则:

&&此类运算的操作数只能是布尔型的,所以一般最后进入运算

按照正常加减乘除运算法则

括号大于天,因此不确定的情况下加括号即可

 

总结:

1.%操作在Java中也能针对double来计算

2.需要区分清楚前置自增与后置自增的区别

3.由于Java是强类型语言,因此对于类型检查较严格,因此像&&之类的运算操作数必须是boolean

4.要区分清楚&和|什么时候是表示安慰运算,什么时候表示逻辑运算

5.整体来看,Java运算符的基本规则与C语言基本一致

 

注释

单行注释://内容

多行注释:/*内容*/

文档注释:/**文档内容*/(可直接用来自动生成文档)

注释规范

内容准确:注释内容要和代码一致、匹配,并在代码修改时及时更新

篇幅合理:注释既补应该太精简,也不应该长篇大论

使用中文:一般中国公司都要求使用中文写注释,外企另当别论

积极向上:注释中不要包含负能量

 

关键字

关键字.png

 

3逻辑控制

3.1顺序结构

代码按顺序一行一行写就是顺序结构

3.2分支结构

3.2.1if语句

形式一:

if(布尔表达式){

满足条件时执行

}

else{

不满足条件时执行(可以没有)

}

 

形式二:

if(布尔表达式){

满足条件时执行

}

else if(布尔表达式){

满足条件时执行

}

else{

不满足条件时执行(可以没有)

}

注意:if/else语句都可以不加{}但是不加的情况下值可以写一行代码与之匹配,所以无论如何加上大括号总不会错!

java中建议将if/else对应的{与之放在同一行!

if语句后不加;

3.2.2switch语句

基本语法:

switch(整数|枚举|字符|字符串){

case 内容1:{

内容满足时执行的语句;

break;

}

case 内容2:{

内容满足时执行的语句;

break;

}

......

default:{

内容都不满足时执行的语句;

break;

}

}

注意

switch中的值只能是整数|枚举|字符|字符串(坚决拒绝long、float、double、boolean)

执行case后加break以便于执行完跳出循环,否则后续case都会被执行一遍

建议switch中还是带上一个default

switch虽然支持嵌套,但是弱智才这么用愚蠢至极

 

3.3循环结构

3.3.1while循环

基本语法格式:

while(循环条件){
    循环语句;

}//条件为true则执行循环语句,否则结束循环

 

注意

和if类似,while下面的语句可以不写{},但是不懈的时候只能支持一条语句,所以还是建议加上{}

和if类似,while后面的{建议和while写在同一行

和if类似,while后面不要多些分号,否则可能导致循环不能正确执行

如若while(循环条件恒成立则意味着死循环)除非循环语句中带有break跳出循环

 

3.3.2break

break意味着跳出循环,也就是提前结束循环

 

3.3.3continue

continue的功能是跳过这次循环,立即进入下次循环

在循环语句中间加一个if判定条件

成立进入后,直接continue;则不会执行后边的循环语句,直接进入下次循环

 

3.3.4for循环

基本语法:

for(表达式1;表达式2;表达式3){
    循环体;

}

表达式1:用于初始化循环变量//当变量已经被定义并且已经初始化了的时候,也可以直接不写表达式1,直接for(;表达式2;表达式3)

表达式2:循环条件

表达式3:更新循环变量

注意:

相比于while循环,for循环将这三个部分合并在一起,写代码时不容易遗漏

和if类似,for下面的语句可以不写{}。但是不写的时候只能支持一条语句,建议还是加上{}

和if类似,for后面的{建议和if写在同一行

和if类似,for后面不要多写分号,否则可能导致循环不能正确执行

 

3.3.5do while 循环

基本语法:

do{

循环语句;

}while(循环条件);

注意:

do while循环最后的分号不要忘记

一般do while很少用到,更推荐使用for和while

 

3.4输入输出

3.4.1输出

基本语法:

System.out.printiln(msg);    //输出一个字符串,带换行

System.out.print(msg);    //输出一个字符串,不带换行

System.out.printf(format,msg);    //格式化输出

println输出的内容自带\n,print不带\n

printf的格式化输出方式和C语言的pringf是基本一致的

转换符.png

 

 

3.4.2输入

读入一个字符(了解)

直接使用System.in.read可以读入一个字符,但是需要搭配异常处理(后续会说)

System.out.print("Enter a Char:");

char i = (char)System.in.read();

System.out.println("your char is : "+i);

//编译出错!!!

 

正确写法:

import java.io.IOException;//需要导入IOException包

try{

System.out.print("Enter a Char:");

char i = (char)System.in.read();

System.out.println("your char is : "+i);

}catch(IOException e){
    System.out.println("exception");

}

由于其麻烦程度考虑,一般不使用

 

使用Scanner读取字符串/整数/浮点数

import java.util.Scanner;//需要导入util包

 

Scanner sc = new Scanner(System.in);

System.out.println("Please enter your name:");

String name = sc.nextLine();

int age = sc.nextInt();

float salary = sc.nextFloat();

sc.close();//注意,要记得调用关闭方法

使用Scanner循环读取N个数字

Scanner sc = new Scanner(System.in);

double sum = 0.0;

inr num = 0;

while(sc.hasNextDouble()){

double tmp = sc.nextDouble();

sum += tmp;

num++;

}

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

System.out.println("avg = "+sum/num);

sc.close();

//执行结果:

10

40.0

50.5

^z

sum = 150.5

avg = 30.1

注意:

当循环输入多个数据的时候,使用ctrl+z来结束输入

 

 

 

 

 

posted @ 2021-08-09 16:32    阅读(116)  评论(0)    收藏  举报