Java学习笔记.

来源:互联网 发布:windows.old删了的后果 编辑:程序博客网 时间:2024/05/17 23:07

Java学习笔记

计算机的作用:储存和计算。

计算机的组成:输入单元,输出单元,储存单元,控制单元,元素单元。

 

变量:表示内存中的某一块内存空间。在Java中变量可以看作是某一块内存空间中的数据。内存空间的别名。通过变量可以找到对应的内存空间以及内存空间中的数据。

 

一:数据类型

数据类型:是用来确定要分配的内存空间大小以及数据储存方式的

数据到底是如何储存在内存中的?

计算机中是一个二进制的世界,只有01两个数字,每一个0或者1叫做一个二进制的位[bit/比特]0+0=0,1+0=1,0+1=1,1+1=10.

现实生活中通常十进制表示数字

十进制二进制八进制十六进制

0000

1111

21022

31133

410044

510155

611066

711177

81000108

91001119

10101012a

11101113b

12110014c

13110115d

14111016e

15111117f

16100002010

4G内存有多少位?

1G=1024mb1mb=1024kb1kb=1024byte1byte=8bit

 

计算机中最小的储存单位是[bit/比特]

计算机中最小的有意义的储存单位是字节[byte]

计算机在分配储存单元的时候是以字节为单位的

 

1.基本类型

基本类型可以直接用二进制表示的类型

  1. 整数类型:

    字节型 byte 8bit/1字节-128~127

    短整型 short 16bit/2字节-32768~32767

    整形   int 32bit/4字节-21亿~21亿

    长整型 long 64bit/8字节-900亿亿~900亿亿

  2. 浮点类型[表示小数]

    单精度 float 32bit/4字节 最多保留8位有效数字,最后一位不精确

    双精度 double 64bit/8字节 最多保留16位有效数字,最后一位不精确

  3. 字符类型

    字符型char 16bit/2字节0~65535

    a’ ‘A’ ‘中’ ‘0

    将每一个字符对应一个数字,这个数字叫做这个字符的Unicode编程

  4. 布尔型

    Boolean 1bit true false

1.引用类型

数组类型

类类型

接口类型

 

数据类型之间的相互转换:

自动转换:按照数据类型能够表示的数据范围,小范围的可以自动转成大范围的

byte->short->int->long

float->double

char->int

int->float

long->double

语法格式:

int a=100;

float b=a;

强制转换:将数据的类型从大范围强制转成小范围

语法格式:

float a=100F;

int b=(int)a;

二:运算符

1.赋值运算符

相同类型之间的数据可以赋值

int t=10;

int a=20;

a=t;

 

2.算术运算符

  1. 二元运算符

    + - * / %

    / 除法:

    整数相除,结果是整数,会丢掉余数。

    浮点数相除,会除尽,保留对应的有效位数

    整数和浮点数相除,会先将整数自动转换成浮点数,在相除

    PS

    20/3+10/4=6+2=8

    20/3+10/4=80/12+30/12=(80+30)/12=110/12=9

    % 取模[计算整除之后的余数]

    整数和浮点数一样,都是计算整除之后的余数。

  2. 混合运算符

    +=  -=  *=  /=  %=

    a+=b -> a=a+b

  3. 一元运算符

    ++ --

    a++  ->  a+=1  ->  a=a+1

    A--  ->   a-=1  ->  a=a-1

    前置++--)和后置++--)的区别:

    a++ 先计算其他,然后计算++

    ++a 先计算++,然后计算其他

     

    ++--的优先级是高于二元算术运算符和混合运算符的

  4. 关系运算符

    关系运算符:是用来判断两个数据之间的大小的

    运算的结果是一个boolean

    == 如果相等,则为true,不相等为false

    != 如果不相等,则为true,相等为false

    >  如果前面的数据大于后面的数据,则为true,否则为false

    <  如果前面的数据小于后面的数据,则为true,否则为false

    >=

    <=

  5. 逻辑运算符

    逻辑运算符:用来对布尔值进行运算的,运算的结果是布尔值。

    ! 逻辑非 原来是真就变成假,原来是假就变成真。

    & 逻辑与[并且]所有条件都为真,则为真,否则为假

    && 短路与  所有条件都为真,则为真,否则为假。将最有可能为假的表达式写在前面。

    | 逻辑或[或者]只要有一个条件为真,则为真,否则为假

    || 短路或 只要有一个条件为真则为真,否则为假。将最有可能为真的表达式写在前面。

  6. 条件运算符[三目运算符/三元运算符]

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

    表达式1一定是一个关系表达式或者逻辑表达式

    当表达式1的结果为真的时候,就执行表达式2

    当表达式1的结果为假的时候,价值型表达式3

     

    例案:计算|a-b|

    int c=a-b>0?a-b:b-a

  7. 位运算符

    按照二进制位进行运算

    & 按位与 1&1=1,1&0=0,0&0=0.相同位都是1,则为1,否则为0。任何数&1都等于原数。任何数&0都等于0

    | 按位或 1|1=1,1|0=1,0|0=0.相同位都为0,则为0,否则都为1.

    ^ 异或 1^1=0,1^0=1,0^0=0.相同位值相同,则为0,否则为1.ab异或的结果,再异或a,结果为b。异或b,结果为a。交换ab的值。

  8. 位移运算符

    << 左移        在低位[右边]0

    >> 右移        整数在高位补0,负数在高位补1

    >>>无符号右移  不管正负,都是在高位补0

    位运算都是按照int类型来计算的  

三.流程控制

1.顺序结构

程序会按照代码的编写顺序一行一行执行,上一行没有执行完,是不会执行下一行的

2.分支结构

程序会按照一定的条件有选择的执行某一些代码

if...

if...else...

if...else...if...else...if...else...

switch...case...case...case...default...

 

格式:

If(条件){

当条件为真的时候要执行的代码

}

格式:

Switch(数字){

case数值1

Break;

case数值2

break;

default:

}

3.循环结构

程序按照一定的条件重复的执行一代码

for先判断条件是否满足,如果满足才执行一次循环,执行完之后再判断。

while先判断条件是否满足,如果满足才执行一次循环,执行完之后再判断。

do...while...先执行一次,再判断条件是否满足

格式:

for(声明变量并赋值;循环条件[必须是boolean];变量自加或自减){

要重复执行的代码

}

格式:

while(;循环的条件;){

要重复执行的代码

}

格式:

do{

要重复执行的代码

}while(;循环的条件;);

4.跳转结构

用来跳转到相应的位置

continue结束本次循环跳转到下一次循环的开始

break结束当前整个循环,跳转到循环结尾的位置。在多层循环中,默认只能够跳出break所在的循环。如果要跳出整个循环,需要给循环定义一个标签。break标签名表示跳转到标签所代表的循环结尾处。

System.out.println(循环开始);

aaa:

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

int num=0;

while(num<10){

num++;

if(num*i==25){

break aaa;

}

System.out.println(num:+num);

}

System.out.println(i:+i);

}

System.out.println(循环结束);

return跳出整个函数,跳转到函数的结尾处

四.数组

1.数组

数组:一组数据[用一个变量表示多个数据]

  1. 定义数组

    int a[]=new int[a.length]

    int[] a=new int[a.length]

    Int[] t=new int[]{1,3,5,7,9};

    Int[] t={1,3,5,7,9}(上面那种的简单写法)

  2. 存放数据

    a[0]=1;

    a[1]=2;

    a[2]=3;

    a[3]=4;//错误ArrayIndexOutofBounds数组下标越界

  3. 取出数据

    int t=a[0];

    int t1=a[1];

  4. 修改数据

    a[o]=2;

  5. 获取数组长度[数组能够存储的数据个数]

    int len=a.lenggth;

  6. 数组的特点

  1. 数组的每个存储空间的地址是连续的

  2. 数组的每个存储空间都有一个编号,叫做数组的下标[索引]

  3. 数组的下表是一个从0开始的连续递增的整数

  4. 数组的最大下标=数组长度-1

0 0