数据类型与运算符

数据类型与运算符

1.Java标识符与关键字

1.1 Java注释:

Java注释主要有三种:

(1)单行注释//注释内容  一般用于方法中(用的最多)

(2)多行注释/* 注释内容 */

(3)文档注释/**文档注释*/(常用于方法和类之上描述方法和类的作用),可用来自动生成文档。

1.2 Java标识符

Java语言中,对于常量、变量、函数、语句块也有名字,我们将其统称为标识符。

标识符的要求:

   1)标识符由字母、数字、下划线、$组成,其中不能以数字开头,不能含有java中的保留字(关键字)。

   2)标识符采用有意义的简单命名。

   3$不在代码中出现。

对于类名和变量的命名,Java采用“驼峰”命名法。

   1)即对于类名,类名是以大写字母开头的名词,如果由多个单词组成则每个单词首字母大写。如:FistName.并且源文件名必须和公共类同名

   2)对于变量则采用小驼峰式命名,即如果只有一个单词则全部小写;若有多个单词则从第二个单词开始每个单词首字母大写。 如:int myAge = 10.

1.3 Java关键字

1、用于定义访问权限修饰符的关键字:private表示私有字段,或者方法等,只能从类内部访问)、protected表示字段只能通过类或者其子类访问子类或者在同一个包内的其他类)、public表示共有属性或者方法

 

2、用于定义函数、类、变量修饰符的关键字:abstract抽象方法抽象类的修饰符)、final表示一个值在初始化之后就不能再改变了表示方法不能被重写,或者一个类不能有子类)、static表示在类级别定义,所有实例共享的)、synchronized表示同一时间只能由一个线程访问的代码块

3、用于定义类与类之间关系的关键字:extends表示一个类是另一个类的子类)、implements表示一个类实现了接口

 

4、用于建立实例及引用实例,判断实例的关键字:new分配新的类实例)、this(表示调用当前实例或调用另一个构造函数)、super表示基类)、instanceof测试一个对象是否是某个类的实例

 

5、用于异常处理的关键字:try表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码)、catchtry搭配扑捉异常信息)、finallytry 语句不管是否发生异常都要执行的语句块)、throw抛出异常)、throws定义方法可能抛出的异常

 

6、用于包的关键字:package一系列相关类组成一个包)、import导入类

 

7、其他修饰符关键字:native表示方法用非java代码实现)、strictfp浮点数比较使用严格的规则)、transient修饰不要序列化的字段)、volatile标记字段可能会被多个线程同时访问,而不做同步)、assert断言条件是否满足

2.Java数据类型

Java是一种强类型的语言,所以必须为每变量声明一种类型。


基本数据类型的保存范围:

基本数据类型

默认值

存储

数值范围

byte

0

1个字节

-128-127

short

0

2个字节

-2^15-2^15-1

int

0

4个字节

-2^31-2^31-1

long

0

8个字节

-2^63-2^63-1

char

\u0000

2个字节

0-2^16-1

float

0.0

4个字节

321EEEE 754单精度范围而

double

0.0

8个字节

641EEEE754双精度范围

boolean

false

1

true/false

    1.在程序开发中,整数就用int,描述小数就用double
    2.long一般用来描述日期、时间、内存或文件大小。

      3.若要进行编码转换或进行二进制流的操作时,使用byte

       4.char一般在描述中文时会用到。


2.1整型

1)有关溢出问题

Java程序中,任何一个整型常量都是int型。

public class Test3 {

public static void main (String[] args){

int num = 20;//定义了一个整型变量

        System.out.println(num*2);

 

        int maxValue = Integer.MAX_VALUE;//当前整数的最大值

        int minValue = Integer.MIN_VALUE;//当前整数的最小值

        System.out.println(maxValue + 1);

        System.out.println(minValue - 1);

}

}

 

 

运行结果:    40

            -2147483648

            2147483647

观察上述代码及运行结果可发现运行结果出错,即在进行整型数据的操作过程中会发生溢出问题。

 

解决溢出问题方法:更换数据类型

 

则用long来解决上述数据溢出问题:

  int maxValue1 = Integer.MAX_VALUE;//当前整数的最大值

        long num1 = maxValue1 + 1L;

        System.out.println(num1);

//1L表示1为长整型数据,若1不指定数据类型,则默认情况下为整型(int

 

运行结果:     2147483648

 

 

(2)有关类型转换问题

 

 

在进行数值运算时:小类型会自动转换为大类型数据,不需要类型换换;

                  但大类型转换为小数据类型时必须强制转换(有可能损失精度)。

 

           long maxValue2 = 2147483648L;

        int result = (int)maxValue2;

        System.out.println(result);

运行结果:   -2147483648 //大数据类型强制转换为小数据类型时丢失了内容


(3)基本数据默认值问题

 

***:所有数据的默认值在主方法中无效

 错误代码: //所有数据的默认值在主方法中

            int i;//定义一个整形变量但并没有初始化

        System.out.println(i);

要想解决此类错误:1)在使用前进行赋值;即int i;i = 10;

                 2)在定义变量时赋值;即int i = 10

 

 

***:各个数据类型的默认值的使用,要结合类才能观察到

class Demon{

public int i;

   public double l;

public char c;

public boolean b;

}

public class Test3 {

public static void main (String[] args){

        Demon demon = new Demon();

        System.out.println(demon.i);

            System.out.println(demon.l);

        System.out.println(demon.c);

        System.out.println(demon.b);

        

}

}

运行结果:0 0.0 false

 

2.2 浮点数

描述小数默认为double

 //浮点数

        double num2 = 10.0;//这是一个小数

        System.out.println(num2*2);//num2double类型,2int类型

运行结果:20.0

 

double 类型可以保存的数字是最大的,

float 保存范围小于double,若果要用float需要强制类型转换,在小数后面加F或者f

 float num3 = 10.0F;//定义float型变量

 

 

传统bug

  System.out.println(1.1*1.1);//1.1默认为double类型

运行结果:1.2100000000000002

  System.out.println(1.1f*1.1f);

运行结果:1.21

 

整数/整数的结果分析:

           int num5 = 10;

        int num4 = 4;

           //整数除以整数仍为整数(取整运算)

        System.out.println(num5/num4);

           //要想得到精确的运算结果,应将其转化为float或者double型数据

        System.out.println((double)num5/num4);

        System.out.println(1.0*num3/num4);

运行结果:2  2.5  2.5

 

2.3字符型

    字符型数据用char来表示,并且用 ’ ’ 来表示字符变量的内容,且可以与int型数据相互转换。

 //字符与整型数据的转换

        char c1 = 'a';

        int num6 = c1;

        System.out.println(num6);

运行结果:97

***

大写字母(A-Z):65-90

小写字母(a-z):97-122

int 转换为 char 类型数据时需要强制类型转换

实现大写字母转化为小写字母

  //大写字母转化为小写字母

        char c2 ='A';

        int num7 = c2 +32;

        char c3 =(char)num7;

        System.out.println(c3);

运行结果:a

注意:

   字符型数字(0-9)与int型数字(0-9)不同;if0==0)则一定为false.

2.4布尔型

    在其他语言中,没有提供布尔类型,因此用’0’ 表示false,用’1’表示true;但在Java中没有这样的概念,true就是truefalse就是false01无关。

2.5初见String

    StringJava中比较重要的类。

    char可以表示单一的字符,如果要想描述多个字符,就必须利用String(字符串)这一概念,需要注意:String并不是基本数据类型,它为引用数据类型

     String可以用 + 表示两个字符串的连接。

           //字符串

        String name = "张三";

        String age = "18";

        System.out.println("姓名:"+name+",年龄:"+age);

            //此处的+表示连接两个字符串

运行结果:姓名:张三,年龄:18

 

观察 + 问题

           int numA = 30;

        double numB = 10.5;

        String sum ="计算结果:" + numA + numB;//+为字符串连接符

        System.out.println(sum);

运行结果:3010.5

           String sum1 ="计算结果:" + (numA + numB);

        System.out.println(sum1);

运行结果:40.5

观察上述结果,可以发现只要使用了+”出现了字符串,则所有数据类型(包含引用数据类型)都转换为String。如果要想得到正确的结果,必须使用()来解决问题。

转义字符:

换行:\n; 制表符(tab):\t; 双引号:\ ;单引号: \

 //转义字符

 System.out.println("今天好开心\n\thappy!\"unhappy\"");

运行结果:今天好开心

happy!"unhappy"

 

3.Java运算符

3.1基础运算符

所有的运算符都是有优先级的,使用()括起来,简单性原则。

自增自减运算符(x++++xx----x

 

           int x = 5;

        int y = 6;

        int sum2 =x++ * y;//后置++;先运算后加加

        System.out.println(x);

        System.out.println(sum2);

运行结果:6 30

           int x = 5;

        int y = 6;

        //int sum2 =x++ * y;

        int sum3 =++x * y;//前置++;先加加在运算        System.out.println(x);

        System.out.println(sum3);

运行结果:6 36

 

总结:x++ x-- 先运算后自增/自减 ;++x --x 先自增/自减后运算

3.2 三目运算符

三目运算符是一种赋值运算,根据条件判断赋哪个值。

数据类型 变量 = 布尔表达式?满足时赋值:不满足时赋值

 //三目运算符

        int m = 3;

        int n = 4;

        int k =3>4?m+n:n-m;//3>4不满足则执行:后面的运算

        System.out.println(k);

运行结果:1

使用三目运算符可以简化代码

3.3 关系运算符(> < >= <= ==

所有的关系运算符返回类型均为boolean类型(true false)可以与逻辑判断语句一起使用

可以直接将字符和数字进行判断

            char cc = '';

        int z = 10;

        System.out.println(cc>z);

运行结果:true

3.4 逻辑运算符

    逻辑运算符有:与(&&&)、或(|||)、非(!)

 

当使用"&"时,明确的表示多个条件都判断了,如果在多个表达式中有条件返回了false,剩余的条件也 要判断;而如果使用"&&"(短路与),只要有条件返回false,剩余条件不再判断,返回false。

当使用"|"时,明确的表示多个条件都判断了,如果在多个表达式中有条件返回了true,剩余的条件也要 判断;而如果使用"||"(短路非),只要有条件返回true,剩余条件不再判断,返回true。

3.5 位运算操作符(|&^~

位运算的关键在于十进制与二进制的转换。使用&(有一个0则为0),使用|(有一个1则为1

//位运算

        System.out.println(2&8);

        System.out.println(2|8);

运行结果:0  10

 

思考:

1、说说 & 和 && 的区别。

当使用"&"时,明确的表示多个条件都判断了,如果在多个表达式中有条件返回了false,剩余的条件也 要判断;而如果使用"&&"(短路与),只要有条件返回false,剩余条件不再判断,返回false。

 

2、存在使 i + 1 < i的数吗?

   存在

   int maxValue = Integer.MAX_VALUE;//当前整数的最大值

System.out.println(maxValue + 1);

结果为:-2147483648

 

3、0.6332 的数据类型是(double

 

4、 System.out.println("5" + 2);的输出结果应该是(52)。

 

5、 float f=3.4;是否正确?

    不正确,float f = 3.14f

posted @ 2020-03-30 23:34  edda_huang  阅读(224)  评论(0编辑  收藏  举报