java编程基础

目录

java基础(数据)

常量

变量

数据类型

运算符

流程控制语句


 

java基础(数据)

常量

常量是指程序执行过程中始终不变的量。
常量有字面常量和符号常量两种。

字面值常量
    A:字符串常量:用""括起来的内容。"hello,world"
    B:整数常量:1,200,300
    C:小叔常量:12.5,3.1415926,13.14
    D:字符常量:用''括起来的内容。'a','b','0'
    E:布尔常量:只有true和false两个
    F:空常量:null

符号常量:

final double PI=3.14;

double area = PI*r*r;  //计算面积

double length = PI*r*2;  //计算周长

final 含义是指最终的、最后的,代表不能再变了,PI的值在运行中不能被修改,只修改定义中的PI的值。

整数常量在Java中的表现形式
    A:二进制,由0,1组成,并使用0b开头;
    B:八进制,由0,1,2,3,4,5,6,7组成,使用0开头;
    C:十进制,由0,1,2,3,4,5,6,7,8,9组成,默认是十进制
    D:十六进制,由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成,使用0x开头
        注意:字母不区分大小写

变量

变量则是根据执行的情况,可以改变值的量。

根据作用域范围的不同分为:成员变量局部变量方法参数变量异常处理参数变量4种。

(1)变量:在程序运行过程中其值发生变化的量,其本质是内存中的一块内存区域,通过变量类型和变量名访问这一块区域
(2)定义格式:
    A:  数据类型 变量名 = 初始化值
    B:  数据类型 变量名;
        变量名 = 初始化值;
(3)注意:作用区域:一对{}之间
(4)分类:
    A:基本数据类型变量,4类8种
    B:引用数据类型变量,类、接口、数组
    1)基本数据类型
        整数      占用内存空间(单位:bit)
        byte        1 x8
        short       2 x8
        int           4 x8
        long        8 x8
        小数
        float        4 x8
        double      8 x8        
        字符
        char        2 x8
        布尔
        boolean     1
    注意事项:
        A:整数默认int类型,小数默认double类型;
        B:定义long类型数据时末尾建议加上L或者l,推荐L
          定义float类型数据时末尾建议加上F或者f,推荐F
        C:引用数据类型大小统一为4个字节,记录的是其引用对象的地址
        D:小数float和double不适合用于不允许有舍入误差的金融计算领域;如果要进行不产生舍入误差的精确计算需要使用BigDecimal类。  
    面试题:Java中的字符可以存储一个汉字吗?为什么?
        可以;char型变量是用来存储Unicode编码的字符,Unicode编码包含了汉字,所以char可以存储任何一个包含在Unicode编码中的汉字。另外Unicode编码占两个字节。 

    2)类型转换
        a)自动数据类型提升从:小到大
            byte,short,char-->int-->long-->float-->double
        b)强制数据类型转换:从大到小
            格式: 目标数据类型 变量名 = (目标数据类型)(被转换的数据)
        注意事项:
            a:boolean不参与类型转换;
            b:一般不建议使用强制数据类型转换,因为可能损失精度;
            c:int-->float,long-->float,long-->double可损失精度;
            d:为byte,short,char等类型变量赋值,只要不超过其范围可以直接赋值;
            f:byte,short,char之间不会进行转换,三者在进行计算时会先转换为int类型。

成员变量根据是否被static修饰分为  静态变量/类变量和实例变量

      静态变量/类变量

     被static修饰的成员变量称为静态变量或类变量
     特点
        类变量被类的所有实例共享,保存在类的公共存储空间中,一个类不管有多少实例,他们引用的都是这个公共存储空间里的值,即只有一个变量值
       类变量是属于类的,不依赖于某个对象,因此除了可通过创建的对象来访问外,还可以直接通过类名来访问,并且这是建议使用的方法
      注意
    static只能修饰成员变量,而不能修饰局部变量、方法参数变量或异常处理参数变量
     实例变量
    没有被static修饰的成员变量称为实例变量
    特点
    每个实例都有自己的实例变量值,有多少个实例就有多少个实例变量值。
    实例变量是属于实例的,因此只能通过实例来引用,而不能直接通过类型直接引用。
   局部变量    在语句块内声明,作用域范围是从声明处直到该语句块的结束
   方法参数变量   作用域范围是在整个方法中
   异常处理参数变量   作用域范围是在异常处理语句块中
变量的引用

   在同一个类中引用(可以引用变量)
            成员变量——类变量    可以引用、没有限制。类变量不能加this关键字。
                    |______ 实例变量    只能从实例方法引用,不能从类方法中引用。实例变量可以加关键字this,用以区别局部变量等
           局部变量    已经声明过的局部变量
           方法参数变量    本方法的方法参数变量
          异常处理参数变量   仅在异常处理块中
   在类外部引用
         具有访问许可的public、protected和(default)的类变量或实例变量
                      类变量:通过类名访问,不建议通过对象名访问
                      实例变量:只能通过对象名访问
        不可以访问没有许可的protected和(default)成员变量以及private成员变量
        不可访问其他类的局部变量和方法参数变量
使用变量时要注意的几个方面
         局部变量的使用要遵循先声明后使用的原则
         一个好的编程习惯是在声明一个变量的同时对它进行初始化。
        按照命名规则为变量进行命名
        与C/C++相比较,C/C++中存在全局变量,而在java中没有全局变量

成员变量与局部变量的区别
功能不同                成员变量体现的是类的属性,而局部变量只是临时保存变量的值。
声明的位置不同    成员变量是声明在方法的外面和类的内部,而局部变量是声明在方法的内部
作用域范围不同    成员变量的作用域范围是整个类,不论成员变量声明在方法的前面还是后面,而局部变量的作用域范围是从声明开始处直到语句块的结束
修饰符不同           成员变量的修饰符可用public、private、protected、default、static、final等等,而局部变量只有一个修饰符final,其他的修饰符都不可用
默认值不同           成员变量声明后被自动初始化(基本数据类型被初始化为默认值,引用数据类型被初始化为null),而局部变量声明后不被初始化。

数据类型

Java是强类型语言,在定义变量前需要声明数据类型,基本数据类型和引用数据类型。

Java的四类八种数据类型

(1)整数:

定义:没有小数部分的数字,负数是允许的。

种类:Java提供四种整数类型:

byte      1个字节     -128到127

short     2个字节     -32,768到32,767

int         4个字节     -2,147,483,648到2,147,483,647

long      8个字节     -9,223,372,036,854,775,808L到9,223,372,036,854,775,807L

(2)浮点数:

定义:含有小数部分的数字。

分类:Java提供两种浮点数:

float      4个字节   约±3.40282347E+38F(6~7个有效的十进制数位)   绝对值:1.4E-45~3.4E38

double  8个字节   约±1.79769313486231570E+308(15个有效数位)   绝对值:4.9E-324~1.8E308

(3)字符类型:

定义:单引号用来表示char常量,是容纳单字符的一种基本数据类型,占1byte。

双引号则表示一个字串,他是Java的一个对象,并不是数据类型。

(4)布尔类型:

     boolean类型只有两个值:false和true。 boolean 类型的数值不能直接转换成其它类型。占1个字节。

基本数据类型:byte、short、int、long、float、double、char、boolean

简单类型

byte

short

int

long

float

double

char

boolean

二进制位数

2

16

32

64

32

64

16

1

包装类

Byte

Short

Integer

Long

Float

Double

Character

Boolean

  1. 从低精度向高精度转换byte 、short、int、long、float、double,低精度到高精度会自动转换,而高精度到低精度则要类型强制转换。
  2. 数值计算中语法现象——“晋升”,即:byte、short和char(低于int的数据类型)进行算术运算后,结果会自动提升成int类型;
  3. 算数运算可以加入小括号"()"提高优先级,优先小括号内运算,再其他运算符运算;
  4. 两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换; 算数运算前操作数变量必须赋值,反之,报语法错误。

数据类型转换

 (1)不同的基本数据类型之间进行运算时需要进行类型转换。除布尔类型外,所有基本数据类型进行运算时都要考虑类型转换,主要运用在算术运算时和赋值远算时。

类型转换图

(2)自动类型转换:int转换double类型时可以直接转换,这种叫做自动类型转换,当然自动类型转换是需要满足特定条件的(将低级别的类型赋值给高级别类型时将进行自动类型转换):

①、目标类型能与源类型兼容,如 double 型兼容 int 型;

②、目标类型大于源类型,如 double 类型长度为 8 字节, int 类型为 4 字节,因此double 类型的变量里直接可以存放 int 类型的数据,但反过来就不可以了。

(3)强制类型转换:将高级别类型赋值给低级别类型时,必须进行强制类型转换。

①、强制类型转换容易造成数据丢失,所以在转换时需要多加注意

②、强制类型转换的语法是:(数据类型)数值;double avg1=75.8;  int avg2=(int)avg1;

5. Scanner类方法(键盘输入):

(1)导入Scanner类:

        Import java.util.*;

(2)创建Scanner对象:

     Scanner input = new Scanner(System.in);

(3)获得键盘输入的数据:

Scanner的常用方法

方法

说明

String  next()

获得一个字符串

Int  nextInt()

获得一个整型数值

Double nextDouble()

获得一个双精度类型数值

Boolean  hasNext()

判断是否有输入数据,如果有输入数据,则返回true;否则,返回false

运算符

JAVA运算符可以分为以下几种:

算术运算符、赋值运算符、比较运算符、逻辑运算符、条件运算符。

Java算术运算符

算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。

Java 中常用的算术运算符:

          其中++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同。

int b=++a;出现在左边,让a先执行自增,然后将值赋给b。

int b=a++;出现在右边,让a的值先赋给变量b,然后再执行自增。

自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8--等写法都是错误的!% 用来求余数,也称为“取模运算符”。

"++“和”--"用于数值变量之前,在赋值操作中,先对被”++“或”--“操作变量值先加1或者先减1,然后在进行其他的操作;

"++"和"--"用于数值变量之后,在赋值操作中,先用被”++“或”--“的操作变量值进行其他的操作,然后在对其值加1或者减1。

JAVA中的赋值运算符

   赋值运算符是指为变量或常量指定数值的符号。如可以使用 “=” 将右边的表达式结果赋给左边的操作数。

JAVA中常用赋值运算符如下表所示:

JAVA中的比较运算符

比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。

Java 中常用的比较运算符如下表所示:

注意:

①、 > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型

②、 == 、 != 两边的操作数既可以是数值类型,也可以是引用类型

java逻辑运算符

常用的逻辑运算符如下表所示:

我们可以从“投票选举”的角度理解逻辑运算符:

①、 与:要求所有人都投票同意,才能通过某议题

②、 或:只要求一个人投票同意就可以通过某议题

③、 非:某人原本投票同意,通过非运算符,可以使其投票无效

④、 异或:有且只能有一个人投票同意,才可以通过某议题

当使用逻辑运算符时,我们会遇到一种很有趣的“短路”现象。

譬如:( one > two ) && ( one < three ) 中,如果能确定左边 one > two 运行结果为 false , 则系统就认为已经没有必要执行右侧的 one < three 了。

同理,在( one > two ) || ( one < three ) 中,如果能确定左边表达式的运行结果为 true , 则系统也同样会认为已经没有必要再进行右侧的 one < three 的执行了!

位运算符

用于操作二进制位的运算符

操作符

描述

&

如果相对应位都是1,则结果为1,否则为0

|

如果相对应位都是0,则结果为0,否则为1

~

按位补运算符翻转操作数的每一位,即0变成1,1变成0。

^

如果相对应位值相同,则结果为0,否则为1

<<

按位左移运算符。左操作数按位左移右操作数指定的位数。

>>

按位右移运算符。左操作数按位右移右操作数指定的位数。

>>>

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值boolean型。

条件运算符(三目运算符)

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

运算过程:如果布尔表达式的值为 true ,则返回表达式1 的值,否则返回表达式2 的值。

对象运算符instanceof

对象运算符instanceof用来测试一个指定对象是否是指定类(或它的子类)的实例,若是则返回true,否则返回false。

Java中运算符的优先级

Java 中常用的运算符的优先级如下表所示:

实际开发中,一般会使用小括号辅助进行优先级管理。

(1)运算:  对常量和变量进行的操作过程
(2)运算符: 对常量和变量进行操作的符号
(3)表达式: 由运算符把常量和变量连接起来的式子,另外,表达式是有结果的
(4)分类:
    a:  算术运算符
        1)+,-,*,/,++,--
        2)整数相除结果是整数,想要得到整数,可以乘以1.0或者除以1.0
        3)取于的结果的符号和前面的数一致
        4)++,--;在数据之前表示数据先变化,再运算;在数据之前表示先运算,再数据变化;
    b:  赋值运算符
        1)=,+=,-=,/=,*=,/=,%=
        2)+=,-=,/=,*=,/=,%=表示把左边和右边运算的结果赋值给左边,并强制转换为右边的类型
    c:  关系运算符
        1)==,!=,>,>=,<,<=
        2)结果为boolean类型
    d:  逻辑运算符
        1)&,|,^,!,&&,||
        2)单用法
            & 有false则为false
            | 有true则为true
            ^ 相同为false,不同为true
            ! 偶数个,值不变,奇数个,值相反
        3)&&左边为false,右边不再执行;||左边为true,右边不再执行
        4)优先级:逻辑非!--逻辑与&&--逻辑或||
    f:  位运算符
        1)&,|,^,~,>>,<<,>>>
        2)做位运算,需要将数据转换为二进制
        3)^的特点:针对同一个数据异或两次,值不变;
    面试题:
        1,下面表达式中那一个不能通过编译
          (A):short s = 1;s = s + 1;
          (B):short s = 1;s +=1;
          答案:B,+=表示把左边和右边运算的结果赋值给左边,并强制转换为右边的类型
        2,请使用最有效率的方式计算2乘以8的结果
            答案:2<<3;
        3,请交换变量的值:
            int a = 10;
            int b = 20;
            答案:
              a:方式一,引用第三方变量
                int temp = a;
                a = b;
                b = temp;
              b:方式二,采用^来实现
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;
    g:三目运算符(条件运算符)
        格式: 关系表达式?表达式1:表达式2;
        计算流程:计算关系表达式的值,如果值为true,表达式1就是结果;如果值为false,表达式2就是结果;
        练习题:
            A:获取两个数中较大的值
                a>b ? a : b;
            B:获取三个数中较大的值
                a>b ? (a>c ? a :c) : (b>c ? b : c);
            C:判断两个数是否相等
                a==b ? true : false;

流程控制语句

流程控制—选择结构与循环结构

一、JAVA条件语句之if语句

1. 单独的if语句

语法:if(条件){

条件成立时执行的代码

}

如果if成立时执行的语句只有一条,可以省略大括号,如果是多句不可省略,比如某些方法  

if(条件),

return;

如果满足此条件跳出方法。

2. 条件语句之if...else

if(条件的布尔表达算式){

符合条件则执行的代码

}else{

不符合执行的代码

}

3. 多重if语句

if(条件1){

代码块1

}else if(条件2){

代码块2

}else{

代码3}

在条件 1 不满足的情况下,才会进行条件 2 的判断;当前面的条件均不成立时,才会

执行 else 块内的代码。

4. 嵌套if语句

if(条件1){

if(条件2){

代码块1

}else{

代码块2

}

}else{

代码块3

}

嵌套if语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件。

二、JAVA条件语句之switch

当需要对选项进行等值判断时,使用 switch 语句更加简洁明了。

       执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

注意:

1、 switch 后面小括号中表达式的值必须是整型或字符型

2、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2

3、 case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束。

4、 可以把功能相同的 case 语句合并起来。

5、 default 块可以出现在任意位置,也可以省略。

三、JAVA循环语句之while

Java 常用的 3 种循环: while 、 do...while 、 for

语法:while(判断条件){

循环操作

}

先判断后执行

执行过程:

< 1 > 判断 while 后面的条件是否成立( true / false )。

< 2 > 当条件成立时,执行循环内的操作代码 ,然后重复执行< 1 >、< 2 >, 直到循环条件不成立为止。

四、JAVA循环语句之do...while

语法:do{

循环操作

}while(判断条件);

 先执行后判断,至少被执行一次

执行过程:

<1> 先执行一遍循环操作,然后判断循环条件是否成立。

<2> 如果条件成立,继续执行< 1 > 、< 2 >,直到循环条件不成立为止。

五、JAVA循环语句之for循环

语法:for(循环变量;循环条件;循环变量变化){

循环操作

}

执行过程:

<1> 执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次

<2> 进行循环条件的判断,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环

<3> 执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断

<4> 依次重新执行< 2 >、< 3 >、< 4 >,直到退出循环

特点:相比 while 和 do...while 语句结构更加简洁易读,三种可以相互替换。

注意:

1、 for 关键字后面括号中的三个表达式必须用 “;” 隔开,三个表达式都可以省略,但 “;” 不能省略。

a. 省略“循环变量初始化”,可以在 for 语句之前由赋值语句进行变量初始化操作。

b. 省略“循环条件”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象。

注意:在编程过程中要避免“死循环”的出现,因此,对于上面的代码可以在循环体中使用 break 强制跳出循环。

c. 省略“循环变量变化”,可以在循环体中进行循环变量的变化。

2、 for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,代码中,初始化变量部分同时对两个变量 i 和 j 赋初值,循环变量变化部分也同时对两个变量进行变化。

3、 循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级

六、JAVA循环跳转语句break、continue及return

1. break语句会跳出循环,执行后面的代码;用于do-while、while、for循环中,可跳出循环而执行循环后面的语句;break常用于switch结构和循环结构中。

2. continue的作用是跳过循环体中剩余的语句执行下一次循环,continue一般用于循环结构中。

3. return的作用是结束当前方法的执行并退出,返回至调用该方法的语句。

七、JAVA循环语句之多重循环

循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值