java基础整理笔记.docx

上传人:b****8 文档编号:9133478 上传时间:2023-05-17 格式:DOCX 页数:38 大小:289.53KB
下载 相关 举报
java基础整理笔记.docx_第1页
第1页 / 共38页
java基础整理笔记.docx_第2页
第2页 / 共38页
java基础整理笔记.docx_第3页
第3页 / 共38页
java基础整理笔记.docx_第4页
第4页 / 共38页
java基础整理笔记.docx_第5页
第5页 / 共38页
java基础整理笔记.docx_第6页
第6页 / 共38页
java基础整理笔记.docx_第7页
第7页 / 共38页
java基础整理笔记.docx_第8页
第8页 / 共38页
java基础整理笔记.docx_第9页
第9页 / 共38页
java基础整理笔记.docx_第10页
第10页 / 共38页
java基础整理笔记.docx_第11页
第11页 / 共38页
java基础整理笔记.docx_第12页
第12页 / 共38页
java基础整理笔记.docx_第13页
第13页 / 共38页
java基础整理笔记.docx_第14页
第14页 / 共38页
java基础整理笔记.docx_第15页
第15页 / 共38页
java基础整理笔记.docx_第16页
第16页 / 共38页
java基础整理笔记.docx_第17页
第17页 / 共38页
java基础整理笔记.docx_第18页
第18页 / 共38页
java基础整理笔记.docx_第19页
第19页 / 共38页
java基础整理笔记.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java基础整理笔记.docx

《java基础整理笔记.docx》由会员分享,可在线阅读,更多相关《java基础整理笔记.docx(38页珍藏版)》请在冰点文库上搜索。

java基础整理笔记.docx

java基础整理笔记

目录

一、进制转换3

1.二进制和十进制之间的转换3

2.其他进制转换3

二、变量4

1.如何开辟内存空间4

2.什么时候定义变量5

3.类型转换5

三、运算符5

1./*运算5

2.++6

3.字符串连接+6

4.转义字符6

5.赋值运算7

6.逻辑运算符7

四、程序流程控制9

1.if......else9

2.Switch11

五、循环11

1.while循环11

2.Do.....while12

3.for12

4.While和for13

5.for循环练习13

求1--10的和13

1-100之间7的倍数13

6.for循环嵌套14

打印尖朝上的三角形14

打印数字三角形14

打印尖朝下的三角形15

九九乘法表16

打印居中三角形16

7.break和continue17

定义标号退出循环17

Continue例子17

六、函数18

1.函数的定义18

2.函数的特点19

3.函数的引用19

七、函数的重载20

1.概念20

2.特点20

3.什么时候使用重载20

八、数组20

1.数组的定义:

20

2.数组分析21

3.数组在内存中存储的结构21

4.对内存的特性22

5.数组静态初始化22

6.数组常见的操作22

获取数组中的元素,通常会用到遍历22

获取最大值、最小值23

选择排序24

冒泡排序(面试)25

数组中的查找26

折半查找26

练习(重点面试)27

进制转换28

一、进制转换

1.二进制和十进制之间的转换

十进制——>二进制。

6的二进制

原理:

对十进制数进行除2运算。

二进制——>十进制。

原理:

二进制乘以2的过程。

110

例:

1+1满二进一也就是10。

2.其他进制转换

转换成十六进制,先转换成二进制在进行转换。

因为是个二进制位就是一个十六进制位。

例:

90转换成十六进制

十六进制

转换成八进制,三个二进制位代表一位

例:

90转换成八进制

二进制就是132.

负数的二进制表现形式

6=110

-6:

其实就是6的二进制取反+1.

取反:

将二进制的1变成0,0变成1.

负数的最高位都是1.

2、变量

变量就是将不确定的数据进行存储。

也就是需要在内存中开辟一个空间。

1.如何开辟内存空间

就是通过明确数据类型,变量名称数据来完成。

数据类型变量名=初始化值

intx=4;

数据类型分为:

基本数据类型引用数据类型

Float和double精度不同,在内存中占用的空间也不同。

Float占了4个八位,double占了8个八位

2.什么时候定义变量

当数据不确定的时候。

需要对数据进行存储时。

就定义一个变量来完成存储动作。

3.类型转换

byteb=3;

b=b+2;

会报错数据容易损失精度

如果非要把值赋给b就需要强制转换

b=(byte)(b+2)

System.out.println('a'+1);这句话会把'a'转换成数值在加1.

三、运算符

1./*运算

intx=4270;

x=x/1000*1000;

System.out.println(x);

4270除1000之后会得到double类型的数据,然后在乘以1000得到的结果会把double类型的结果后面的小数去掉,保留整数部分。

System.out.println(-1%5);如果前面是负数的话结果就是负数,如果是正数的话那么结果就是正数

2.++

inta=3,b;

b=a++;

先将a的值赋给b然后a在++

a++——>a=a+1;

a++我先出去玩,然后在回家吃饭

inta=3,b;

b=++a;a的值先自行++,然后在将a的值赋给b

++a我先在家吃饭,在出去玩

3.字符串连接+

字符串数据和任何数据使用+都是相连接,最终结果都会变成字符串。

System.out.println("5+5"+5+5);结果是:

5555

4.转义字符

通过\来转变后面字母或者符号的含义

\n:

换行

\b:

退格

\r:

按下回车键

\t:

制表符相当于tab建

在Linux下换行是一个字符\n

在Windows系统下换行是两个字符\r\n

在Dos下直接是\r

输出一个带双引号的字符

System.out.println("\"hello\"");

5.赋值运算

intx=3;把右边的值赋给左边。

x+=4;把左右两边的和赋给左边。

shorts=4;

//s=s+5;这个是两次运算,先做加法,在做赋值。

s+=5;这个是一次运算,把左右两边的和赋给左边。

会做自动转换工作。

s=s+5编译失败。

因为s会被提升为int类型,运算后的结果还是int类型。

无法赋值给short类型。

s+=5编译通过,因为+=运算符在给赋值时,自动完成了强转操作。

6.逻辑运算符

逻辑运算符用于连接boolean类型的表达式

&(and)与

true&true=true;

true&false=false;

false&true=false;

false&false=false;

&:

只要两边的boolean表达式结果,有一个为false。

那么结果就是false。

只有两边都为true,结果才为true。

|或

true|true=true;

true|false=true;

false|true=true;

false|false=true;

|:

两边只要有一个味true,结果为true

只有两边都有false,结果为false。

^异或

true^true=false;

true^false=true;

false^true=true;

false^false=false;

^:

异或;就是和|有点不一样。

当true^true=false;

两边相同结果就是false

两边不同结果是true

双与&&(面试)

&&:

具有短路的功能

|和||的特点

|:

两边都参与运算

||:

当左边为true。

右边不运算。

<<左移>>右移

四、程序流程控制

1.if......else

if……else与三元运算符的区别

if……else结构简写格式:

变量=(条件表达式)?

表达式1:

表达式2;

三元运算符:

好处:

可以简化ifelse代码。

弊端:

因为是一个运算符,所以运算完必须要有一个结果

If语句只要有一个满足下面的语句就不会执行。

练习:

classIfTest

{

publicstaticvoidmain(String[]args)

{

//需求1:

根据用户定义的数值不同。

打印对应的星期英文。

intnum=2;

if(num==1)

System.out.println("monday");

elseif(num==2)

{

System.out.println("tsd");

}

else

System.out.println("nono");

//需求2:

根据用于指定月份,打印该月份所属的季节。

//3,4,5春季6,7,8夏季9,10,11秋季12,1,2冬季

intx=4;

if(x==3||x==4||x==5)

{

System.out.println("春季");

}

elseif(x==6||x==7||x==8)

{

System.out.println("夏季");

}

elseif(x==9||x==10||x=11)

{

System.out.println("秋季");

}

elseif(x==12||x==1||x=2)

{

System.out.println("冬季");

}

else

System.out.println(x+"月份不存在");

//第二种写法

if(x>12||x<1)

{

System.out.println(x+"月份不存在");

}

elseif(x>=3&&x<=5)

{

System.out.println("春季");

}

elseif(x>=6&&x<=8)

{

System.out.println("夏季");

}

elseif(x>=9&&x<=11)

{

System.out.println("秋季");

}

else

System.out.println("冬季");

}

}

2.Switch

switch语句:

允许变量与多个值进行相等性检测,每个值被一个case语句调用和检测。

语法:

switch(变量){

case值:

//语句

break;

case值:

//语句

break;

……

default:

//语句

switch语句中检测的变量只能是byte、short、int和char类型

break:

用break语句可以跳出switch语句体,程序继续执行switch语句体下面的程序

3.ifelse和Switch

ifelse和switch语句很像。

具体什么场景下,应用那个语句?

如果判断的具体数值不多,而是符合byte、short、int和char类型这四种类型

虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。

其他情况:

对区间判断,对结果为Boolean类型判断。

使用ifelse因为使用的范围要广。

5、循环

1.while循环

定义初始化表达式

while(条件表达式){

循环体(执行语句)

程序流程先进行while循环,首先检测到布尔表达式。

如果是true就执行循环,知道布尔表达式为false为止

例子:

classWhileDemo

{

publicstaticvoidmain(String[]args)

{

/*

定义初始化表达式

*/

intx=3;

while(x<1)

{

System.out.println("HelloWorld!

");

x++;

}

}

}

2.Do.....while

do/while循环与while类似,不同的是do/while循环至少要执行一次,语法为:

do{

//语句

}while(布尔表达式);

While:

先判断条件,只用条件满足才执行循环体。

Dowhile:

先执行循环体,在判断条件,条件满足,在继续执行循环体。

简单一句话:

dowhile:

无论条件是否满足,循环体至少执行一次。

例子:

intx=1;

do{

System.out.println("do:

x="+x);

x++;

}while(x<0);

3.for

for循环是一种允许我们编写一个执行指定次数循环的控制结构,其语法形式如下:

for(初始化表达式;循环表达式;循环后的操作表达式){

执行语句

无限循环的最简单的表现形式。

for(;;){}

4.While和for

(1)变量有自己的作用域。

对于for来讲;如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效。

for语句执行完毕。

该变量中内存中就会消失。

(2)for和while可以进行互换。

如果需要定义循环增量。

用for更为合适。

5.for循环练习

求1--10的和

classForTest2

{

publicstaticvoidmain(String[]args)

{

getNum();

}

publicstaticvoidgetNum(){

intsum=0;

for(intx=1;x<=10;x++)

{

sum=sum+x;

}

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

}

}

1-100之间7的倍数

publicstaticvoidgetTest3()

{

intcount=0;

for(intx=1;x<100;x++)

{

if(x%7==0)

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

count++;

}

System.out.println("7的倍数的个数是:

"+count);

}

6.for循环嵌套

打印尖朝上的三角形

*

**

***

****

for(intx=0;x<5;x++)

{

for(inty=0;y<=x;y++)

{

System.out.print("*");

}

System.out.println();

}

?

:

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

 

打印数字三角形

1

12

123

1234

12345

for(intx=1;x<=5;x++)

{

for(inty=1;y<=x;y++)

{

System.out.print(y);

}

System.out.print();

}

打印尖朝下的三角形

******

*****

****

***

**

*

?

?

?

?

?

:

for(intx=0;x<6;x++)

{

for(inty=x;y<=4;y++)

{

System.out.print("*");

}

System.out.println();//?

?

?

?

?

?

?

?

?

}

 

?

?

?

?

?

:

for(intx=5;x>0;x++)

{

for(inty=0;y

{

System.out.print("*");

}

System.out.println();//?

?

?

?

?

?

?

?

?

}

九九乘法表

for(intx=1;x<=9;x++)

{

for(inty=1;y<=x;y++)

{

System.out.print(x+"*"+y+"="+x*y);

}

System.out.println();

}

 

打印居中三角形

----*

---**

--***

-****

*****

 

for(intx=0;x<5;x++)

{

for(inty=x+1;y<5;y++)

{

System.out.print("");

}

for(intz=0;z<=x;z++)

{

System.out.print("*");

}

System.out.println();

}

7.break和continue

break:

用break语句可以跳出switch语句体,程序继续执行switch语句体下面的程序。

在循环结构中,也可以用

break语句跳出本层循环体,从而提前结束层循环。

continue:

作用是结束本次循环(即跳过本次循环中余下尚未执行的语句),继续下一次循环。

定义标号退出循环

w:

for(intx=0;x<3;x++)

{

q:

for(inty=0;y<4;y++)

{

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

Breakw;

}

}

/*

标号只能定义在break循环上

*/

Continue例子

例子一:

for(intx=0;x<10;x++)

{

if(x%2==1)

continue;

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

}

例子二:

w:

for(intx=0;x<3;x++)

{

q:

for(inty=0;y<4;y++)

{

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

Continuew;

}

}

输出的结果是:

0、1、2

记住:

break和continue语句作用的范围

break和continue单独存在时,下面不可以有任何语句,因为执行不到

6、函数

1.函数的定义

修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2.....)

{

执行语句;

return返回值;

}

返回值类型:

函数运行后的结果的数据类型。

参数类型:

是形式参数的数据类型。

形式参数:

是一个变量,用于存储调用方式时传递给函数的实际参数。

实际参数:

传递给形式参数的具体数值。

return:

用于结束函数。

返回值:

该值会返回给调用者。

例子:

定义一个整数的*3+5的运算

publicstaticintgetSum(intnum)

{

returnnum*3+5;

}

2.函数的特点

(1)定义函数可以将功能代码进行封装

(2)便于对该功能进行复用

(3)函数只有被调用才会被执行

(4)函数的出现提高了代码的复用性

(5)对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

注意:

函数中只能调用函数,不可以在函数内部定义函数。

定义函数时,函数的结果应该返回给调用者,交由调用者处理。

3.函数的引用

如何定义一个函数呢?

(1)既然函数是一个独立的功能,那么该功能的运算结果是什么先明确。

(2)在明确在定义该功能的过程中是否需要未知的内容参与运算。

例子1:

publicstaticintgetSum(intx,inty)

{

returnx+y;

}

例子2:

比较两个数是否相等

思路:

(1)明确功能的结果:

结果是:

boolean

(2)功能是否有未知内容参与运算。

有两个整数。

Publicstaticbooleancompare(intx,inty)

{

returnx==y;

}

例子3

对两个数进行比较。

获取较大的数

publicstaticintgetMax(inta,intb)

{

return(a>b)?

a:

b;

}

7、函数的重载

1.概念

在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可

2.特点

与返回值类型无关,只看参数类表。

3.什么时候使用重载

当定义的功能相同,当参与运算的未知内容不同。

那么,这时就定义一个函数名称才表示该功能,方便阅读,而通过参数类表的不同来区分多个不同名的函数。

例子:

intadd(intx,inty){returnx+y};intadd(intx,inty,intz){returnx+y+z};

八、数组

1.数组的定义:

概念:

同一种数据类型的集合。

其实数组就是一个容器。

好处:

可以自动个数组中的元素从0开始编号,方便操作这些元素

格式:

1.元素类型[]数组名=new元素类型[元素个数或长度]

例子:

int[]arr=newint[2];

2.元素类型[]数组名=new元素类型[]{元素1,元素2,......}

例子:

int[]arr=newint{1,2,4,5};

int[]arr={2,4,5};

2.数组分析

数据类型有两种:

基本数据类型,引用数据类型

int[]arr=newint[2];arr它不是int类型,是数组类型,int表示是数组里面的数据类

数组类型就是引用数据类型。

只有引用类型的数据才有null值。

3.数组在内存中存储的结构

Java程序中运行时,需要在内存中分配空间。

为了提高运算效率,有对空间进行了不同区域的划分,

因为没一片区域都有特定的处理数据方式和内存管理方式。

栈内存:

用于存储局部变量。

当数据使用完,所占空间会自动释放。

堆内存:

数组和对象,通过new关键字建立的实例都存放在堆内存中。

每一个实体都有内存地址值

实体中的变量都有默认初始化值

实体不在被使用,会长不确定的时间内被垃圾回收器回收。

实例:

int[]x=newint[2]

int[]x是在栈内存存储的,一旦new出来的都是存在堆内存存储的。

newint[2]就会在堆内存中分配两个内存地址值,每个内存地址块都会有一个唯一的内存首地址值。

那么堆内存中的地址怎么样跟数组变量x联系起来呢?

堆内存中的每一个实体都有一个存放位置或内存地址值。

用内存地址来表示数据存储的位置。

这个内存地址用16进制来表示内存的首地址

把堆内存的首地址赋值给x这样x都有值了。

这样x就指向了这个数组int[]x=newint[2]了。

或者说x引用了这个数组。

4.对内存的特性

每个实体的堆内存都有初始化默认值,每个数据类型不一样默认值也不一样。

如果是Boolean类型的默认值是false。

int[]x=newint[2]

int[]y=x

x=null;

如果x=null那么就跟堆内存中的数据没有联系了。

那么堆内存的数据就会变成垃圾。

这样就会存在垃圾x就不会指向堆内存中的实体的地址。

Javajvm中的垃圾收集

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2