尚硅谷-第二课14072233

时间:2022-07-18 00:49:32
   
一、 课前复习
1. 软件 : 系统软件 应用软件

人机交互方式: 图形化界面方式 命令行方式

2. path环境变量

path:windows 操作系统执行命令时,需要搜寻路径

编写第一个java程序

我们写的java程序都是以.java结尾的称为源文件。一个源文件中可以声明一个活着

多个类

class Helloword{

publicstatic void main(String[]args){


}

}

3. [注意点]

java源文件以.java为扩展名。源文件的基本组成为.class类

一个源文件中只能有一个public类。其他类的个数不限,如果源文件中包含一个public类,则文件名必须按该类命名

java语言严格区分大小写。

java方法有一条一条语句构成每个语句以;结束

大括号成对出现

4. 注释

单行注释://

多行注释:/* */

文档注释:/** */

5. 关键字:被java语言赋予特殊含义的字符串。单词。class public void intr short

6. 保留字

7. 标识符:凡是可以自己明明的地方:类名,变量名,包名

8. 命名规则:

Java 对各种变量

、方法和类等要素命名时使用的字

符序列称为标识符 凡是自己可以起名字

的地方都叫标识符。 定义合法标识符规则:

由26个英文字母大小写,0-9 ,_或 $ 组成

数字不可以开头。 不可以使用关键字和保留字,

但能包含关键字和保留字。Java中严格区分大小写,

长度无限制。 标识符不能包含空格。注意:在起名字时,

为了提高阅读性,要尽量有意义,“见名知意”。

9. 命名规范

Java中的名称命名规范:

包名:多单词组成时所有字母都小写:xxxyyyzzz 类名、

接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 变量名、

方法名:多单词组成时,第一个单词首字母小写,

第二个单词开始每个单词首字母大写:xxxYyyZzz

10. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ



11. 变量

12. 分类:

基本数据类型:

数值型

整数类型 byte1字节 short2字节 int4字节 long8字节

浮点类型 float4字节 double8字节

字符型

布尔型

引用数据类型 Stringstr1="javaEE"



接口

数组

数据类型转换

有多种类型的数据混合运算时,

系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。

byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串



二、 第二课

//String 可以与基本数据类型做运算,但是仅限于+结果为String类型

class Text{

Stringstr1="javaEE";

inti1=10;

Stringstr2=str1+i1;

System.out.println("str2:"+str2);

System.out.println("str1:"str1);

System.out.println('*'+'\t'+'*');//93

System.out.println("*"+"\t"+"*");

System.out.println("*"+'\t'+'*');//""+''链接

}

练习

String str1 = 4; //判断对错:错

String str2 = 3.5f + “”; //判断str2对错:对System.out.println(str2); //输出:3.5

System.out .println(3+4+“Hello!”); //输出:7Hello

System.out.println(“Hello!”+3+4); //输出:Hello!34

System.out.println(‘a’+1+“Hello!”); //输出:98Hello!

System.out.println(“Hello”+‘a’+1); //输出: Helloa1

public class Text5{

public static void main(String []args){

//Stringstr1=4;

Stringstr2=3.5f+"";

System.out.println(str2);

System.out.println(3+4+"Hello!");

System.out.println("Hello!+3+4");

System.out.println('a'+1+"Hello");

System.out.println("Hello"+'a'+1);

Strings0="hello";

Strings1=new String ("hello");

Strings2="he"+"lo";

System.out.println(s0==s1);

System.out.println(s0==s2);



shorts=5;

//s=s-2;

bytebb=3;

//b=b+4;

bb=(byte)(bb+4);

charc='a';

inti=5;

doubled=.314;

byteb=5;

shortss=3;

intt=ss+b;

}

}



String

值null可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。

String类属于引用类型,可用null赋值。

String类是一个典型的不可变类,String对象创建出来就

不可能被改变。创建出的字符串将存放在数据区,保证

每个字符串常量只有一个,不会产生多个副本。

String s0 = “hello”;

String s1 = “hello”;

String s2 = “he” + “llo”;

System.out.println(s0 ==s1);

System.out.println(s0 ==s2);



进制

对于整数,有四种表示方式:

二进制:0,1 ,满2进1.以0b或0B开头。

十进制:0-9 ,满10进1. 八进制:0-7 ,

满8进1. 以数字0开头表示。

十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。

如:0x21AF +1= 0X21B0



底层的整数都以补码的形式存储

对于正数来说。原码,反码,补码,3码合一

对于负数来讲。。原码,反码(除了符号位外所有原码位置值取反),补码(反码加1)

Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;

当是long类型时,二进制默认占64位,第64位是符号位



八进制与二进制的转换对于整数,有四种表示方式:二进制:0,1 ,满2进1.以0b或0B开头。十进制:0-9 ,满10进1. 八进制:0-7 ,满8进1. 以数字0开头表示。十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。 如:0x21AF +1= 0X21B0

2-->8 将二进制的每隔三位为一组转换为十进制作为八进制的一位

运算符

1) 算术运算符

2) 赋值运算符

3) 比较运算符

4) (关系运算符)

5) 逻辑运算符

6) 位运算符

7) 三元运算符

1.算数运算符

*/

public class Text3{

publicstatic void main(String []args){

int i1=10;

int i2=10/2;



int i3=12;

int i4=i3/2;

System.out.println("i2:"+i2);//5

System.out.println("i4:"+i4);//2



double d1=i3/5;

System.out.println("d1:"+d1);

int a=1230;

int b=a/1000;//1;

int c=12/5*5;

System.out.println("b:"+b);

System.out.println("c:"+c);



int j1=12;

int j2=j1%5;

System.out.println("j2:"+j2);//2



j1=12;

j2=j1%-5;

System.out.println("j2:"+j2);//2



j1=-12;

j2=j1%5;

System.out.println("j2:"+j2);//-2



j1=-12;

j2=j1%-5;

System.out.println("j2:"+j2);//-2

//结果与被模数一直



int m1=10;

int m2=m1++;

System.out.println("m1:"+m1);//11

System.out.println("m2:"+m2);//10



m1=10;

m2=++m1;

System.out.println("m1:"+m1);//11

System.out.println("m2:"+m2);//11

//前++ 先加一后赋值

//后++ 先赋值后++

m1=10;

m2=--m1;

System.out.println("m1:"+m1);//9

System.out.println("m2:"+m2);//9



m1=10;

m2=m1--;

System.out.println("m1:"+m1);//9

System.out.println("m2:"+m2);//10



short s1=10;

s1=(short)(s1+1);

s1++;//数据类型没变

System.out.println("s1:"+s1);

}

}



1.如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。

2.对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x=3510;x=x/1000*1000; x的结果是?

3.“+”除字符串相加功能外,还能把非字符串转换成字符串.例如:System.out.println("5+5="+5+5);//打印结果是

2.自加运算符

int m1=10;

int m2=m1++;

System.out.println("m1:"+m1);//11

System.out.println("m2:"+m2);//10



m1=10;

m2=++m1;

System.out.println("m1:"+m1);//11

System.out.println("m2:"+m2);//11

//前++ 先加一后赋值

//后++ 先赋值后++

m1=10;

m2=--m1;

System.out.println("m1:"+m1);//9

System.out.println("m2:"+m2);//9



m1=10;

m2=m1--;

System.out.println("m1:"+m1);//9

System.out.println("m2:"+m2);//10



short s1=10;

s1=(short)(s1+1);

s1++;//数据类型没变

System.out.println("s1:"+s1);


3.赋值运算符

public class Text4{

publicstatic void main(String[]args){

int i1=10;

//i1=i1+5;

i1+=5;//i1=i1+5;



double d=15;

d*=0.2;//d=d*0.2;

System.out.println("i1:"+i1);

System.out.println("d:"+d);



short s=10;

s+=2;//s=s+2;

System.out.println("s:"+s);



int i=1;

i*=0.1;

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

i++;

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

}

}

short s = 3;

s=s+2; ① s+=2; ②

①和②有什么区别?

s+=2; 会出错!s=s+2;没问题

4.比较运算符

class Text6{

publicstatic void main(String[] args){

boolean b=false;

System.out.println("Hello"instanceof String);

if(b=true){

System.out.println("今天下雨了");

}else{

System.out.println("今天没下雨");

}

int i=1;

if(i>-4 && i<2){

System.out.println("今天下雨了");

}else{

System.out.println("今天没下雨了");

}

}

}



&—逻辑与 | —逻辑或 !—逻辑非&& —短路与 || —短路或 ^ —逻辑异或

逻辑运算符

a b a&b a|b !a a^b a&&b a||b

true true T T F F T T

true false F T F T F T

false true F T T T F T

false false F F T F F F



/*

5.逻辑运算符

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

“&”和“&&”的区别:

单&时,左边无论真假,右边都进行运算;

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

理解:异或,追求的是“异”!

&与&&的区别和用法

*/

class Text7{

publicstatic void main(String[] args){

boolean b1=true;

boolean b2=false;

System.out.println(b1 & b2);

System.out.println(b1 && b2);

System.out.println(b1 | b2);

System.out.println(b1 || b2);

System.out.println(b1 ^ b2);

System.out.println(!b1);



//当符号左端为假时程序会继续执行符号又短的

int i1=10;

if(b2 & i1++>0){//全部判断完

System.out.println("条件为真");

}else{

System.out.println("条件为假");

}

System.out.println("i1:"+i1);



int i2=10;

if(b2 && i2++>0){//短路判断

System.out.println("条件为真");

}else{

System.out.println("条件为假");

}

System.out.println("i2:"+i2);



if (b2 & 10/0 >2){

System.out.println("HiHi");

}



//| and ||的区别

int j1=10;

if(b1 | j1++>0){

System.out.println("条件为真");

}else{

System.out.println("条件为假");

}

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



int j2=10;

if(b1 || j2++>0){

System.out.println("条件为真");

}else{

System.out.println("条件为假");

}

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

}

}


例题1:

class Text11{

public static void main(String[] args){

intx=1;

inty=1;

if(x++==2& ++y==2){

x=7;

}

System.out.println("x="+x+",y="+y);//2/2

x=1;y=1;

if(x++==2&& ++y==2){

x=7;

}

System.out.println("x="+x+",y="+y);//2/1

x=1;y=1;

if(x++==1|++y==1) {

x=7;

}

System.out.println("x="+x+",y="+y);//7/2

x=1;y=1;

if(x++==1||++y==1){

x=7;

}

System.out.println("x="+x+",y="+y);//7/1

}

}

6.位运算符

6.1<<左移运算符

/*

位运算符: <<>> >>> & | ^ ~

*/

class Text8{

publicstatic void main(String[] args){

int a=31;

int b=a<<2;

System.out.println(b);//124 =31*4


System.out.println(2<<3);//16


System.out.println(31<<28);//-26843546

}
}


6.2>> >>>右移

a=-31;

b=a>>2;

System.out.println(b);

b=a>>>2;

System.out.println(b);

6.3位运算

6.4~取反


7.实例1:(交换位置)

class Text9{

publicstatic void main(String[] args)

{

int m=12;

int n=5;

System.out.println("m:"+m+"n,"+n);

int temp =m;

m=n;

n=temp;

System.out.println("m:"+m+"n,"+n);



m=m+n;//m=17;

n=m-n;//12=17-5

m=m-n;//5=17-12

System.out.println("m:"+m+"n,"+n);



m=m^n;

n=m^n;

m=m^n;

System.out.println("m:"+m+"n,"+n);

}

}

8.三元运算符

/*

三元运算符

(条件表达式)?表达式1 :表达式2

返回一个结果

结果的数据类型取决于表达式1.表达式2的数据类型

两个表达式的数据类型要一直

*/

class Text10{

publicstatic void main(String[] args)

{

int i=20;

int j=20;

//取出最大值

String max=(i>j)?"i大":(i==j)?"相等":"j大";

System.out.println(max);

}

}

三元运算符的格式:

(条件表达式)?表达式1:表达式2;

为true,运算后的结果是表达式1;

为false,运算后的结果是表达式2;

表达式1和表达式2为同种类型

三元运算符与if-else的联系与区别:

1)三元运算符可简化if-else语句

2)三元运算符要求必须返回一个结果。

3)if后的代码块可有多个语句

class Text12{

publicstatic void main(String[] args)

{

//4,2,1

int a=13;

int b=12;

int c=5;

int max=0;

max=(a>b?(a>c?a:c):(b>c?b:c));

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

}

}


10.程序流程控制

顺序结构

程序从上到下逐行地执行,中间没有任何判断和跳转。

分支结构

根据条件,选择性地执行某段代码。

有if…else和switch两种分支语句。

循环结构

根据循环条件,重复性的执行某段代码。

有while、do…while、for三种循环语句。

注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素

if-else语句应用举例

class Text13{

publicstatic void main(String[] args){

int i=10;

int j=i+2;

System.out.println(j);//12

/*System.out.println(n);

int m=10;

int n=10;*/

//条件判断

int age=20;

if(age<=18){

System.out.println("你好未成年");

}else{

System.out.println("已经成人了,可以看成人电影了");

}



if(age<12){

System.out.println("必须在父母的看护下");

}else if(age<22){

System.out.println("可以谈恋爱,不可结婚");

}else if(age<35){

System.out.println("可以结婚了,com on");

}else{

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

}

int i=10;

int j=23;

int max=0;

if(i>j){

max=i;

}else{

max=j;

}

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

//三元运算符与选择结构可以互相转换

//在有返回值的情况下

}

}

例题1:

从键盘输入小明的期末成绩。

当成绩为100分时,奖励一辆BMW;

当成绩为(80,99]时,奖励一个台iphone5s;

当成绩为[60,80]时,奖励一本参考书;

其它时,什么奖励也没有。

import java.util.*;

class Text15{

//如何从键盘输入

/*

1.导入java.util.Scanner类

*/

publicstatic void main(String[] args){

Scanner s=new Scanner(System.in);

//调用方法,获取信息


//String a=s.next();

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

int score=s.nextInt();

if(score==100){

System.out.println("奖励一个BOMA");
}else if(score>80 &&score<=90){

System.out.println("奖励一个IPone");

}elseif(score>=60&&score<=80){

System.out.println("奖励一个参考书");

}

else{

System.out.println("什么都没有");

}

}

}



例题2:
/*

大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,

当然要提出一定的条件:

高:180cm以上;

富:财富1千万以上;

帅:是。

如果这三个条件同时满足,则:“我一定要嫁给他!!!”

如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”

如果三个条件都不满足,则:“不嫁!”

*/

import java.util.*;

class Text17{

publicstatic void main(String[] args){

boolean a=false;

boolean b=false;

boolean c=false;

System.out.println("输入:高:180 Y/N");

a=new String ((newScanner(System.in).next())).equals("Y");

System.out.println("输入:富: 100000 Y/N");


b=new String ((newScanner(System.in).next())).equals("Y");

System.out.println("输入:帅: Y/N");

c=new String ((newScanner(System.in).next())).equals("Y");

if(a&&b&&c){

System.out.println("我一定要嫁给他!!!");

}else if(a|b|c){

System.out.println("嫁吧,比上不足,比下有余。");

}else{

System.out.println("不嫁!");

}

}

}