2.数据类型与运算符

四、 Java数据类型

Java语言是强类型,每一个表达式或者变量都有一个在编译时就确定好了的类型,所有变量需要先声明后使用。

Java中数据类型包括 基本数据类型  引用数据类型(复杂数据类型)两大类

8      数组、类、接口

★基本数据类型(48)


整数类型:

类型

存储需求

取值范围

byte

1字节

–128 127

short

2字节

–32,768 32,767

int

4字节

–2,147,483,6482,147,483, 647 (刚刚超过20亿)

long

8字节

–9,223,372,036,854,775,808 9,223,372,036,854,775,807

 

整形:没有小数部分的数值,可以是负数.

 

一般情况下int最常用,因此java中一个整形变量默认为int类型。长整形后面需要加一个后缀Ll eglong a = 1000L;

▶▶如果直接将一个较小的整数常量(在byteshort范围内的数据)赋给一个byteshort类型的变量,系统自动将该值当做byteshort类型变量来处理,如果系统使用一个巨大的数据,超过了int的范围,系统不会自动将该数据当做long类型处理,要想当成long类型处理必须在后面添加Ll

案例:

byte a = 56; //正确,系统会把56当做byte类型处理

short b = 56; //正确,系统会把56当做short类型处理

int c = 100; //正确,系统会把100当做int类型处理

long d = 100000000000000; //不正确,系统还是将100000000000000当做int类型处理,但是100000000000000已经超过类int类型能表示的范围,所以要想系统将100000000000000当做long类型,必须在后面加上L或l  long d = 100000000000000L)


  练习1

浮点类型:

类型

存储需求

取值范围

float

4字节

大约±3.40282347E+38F (有效位数6–7 )

double

8字节

大约±1.79769313486231570E+308 (有效位数15 )

 

浮点类型:表示有小数部分的数值。

 

▶▶一般情况下double最常用,系统中浮点类型数据默认为double

▶▶float型的数值有一个后缀Ff,没有后缀的浮点数默认为double类型。

案例:

float a = 10.5;//报错,10.5系统默认为double类型,double类型范围比float大,所以直接将double类型数据给到float系统会报错,要想将10.5当做float类型处理,必须在后面添加f或F

double b = 10.5;

 

字符类型:

类型

存储需求

取值范围

char

2字节

世界上所有书面语言字符包括26个英文字母、中文……

 

字符类型:用于表示单个字符,字符类型的值必须使用单引号括起来。

 

▶▶Java采用的Unicode编码,Unicode编码几乎支持世界上所有书面语言,也包括中文……

 

Eg:

char a = ‘男’;//a是一个字符类型变量,a的值是’男’

char b = ‘A’;//b是一个字符类型变量,b的值是’A’;

int c = 10;//c是一个整数类型变量,c的值为10


练习2



数据类型转换

Java中八中基本数据类型除了boolean类型外,都可以进行相互转换,有两种转换方式:

自动类型转换

强制类型转换

 

▼自动类型转换
条件:

类型兼容

目标类型的范围大于源类型的范围

 

 

Eg:

byte a = 12;//a是byte类型变量

int b = a;//自动类型转换

 

int a = 123;

double b = a;//自动类型转换

 

char a = ‘男’;

int b = a;//自动类型转换 (‘男’Unicode码保存在电脑中的,此处可以得到他的unicode值)

 

▼强制类型转换

Eg:

int a = 12;

byte b = (byte)a; //强制类型转换

 

double a = 12.5;

int b = (int)a; //强制类型转换

 

注意:强制转换可能导致精度丢失或错误结果,所以不可随意滥用。

 

public class Test1{

public static void main(String[] args){

int a = 200;

byte b = (byte)a;//强制类型转换

System.out.println(a+"    "+b);//200   -56200超过byte范围得到错误结果)

 

double m = 12.5;

int n = (int)m;//强制类型转换

System.out.println(m+"    "+n);//12.5   12(int只能保存整数,损失精度)

}

}

 

 

表达式中数据类型的自动提升

当使用二元运算符对两个值进行运算时,两个操作数会转换成通用类型。

î 如果两个操作数中有一个是double类型,则另一个将会转换成double型;

î 如果两个操作数中有一个是float类型,则另一个将会转换成float型;

î 如果两个操作数中有一个是long类型,则另一个将会转换成long型;

î 否则,两个操作数都转换成int型。

 

 

Eg:

public class Test1{

public static void main(String[] args){

int a = 10/3;

int b = (int)(10/3.0);//强制类型转换

double c = 10/3;//自动类型转换

double d = 10/3.0;

System.out.println(a);//3

System.out.println(b);//3

System.out.println(c);//3.0

System.out.println(d);//3.3333333

}

}

 运算符

▼算术运算符

+-*/%(取模、取余)




▼自增自减运算符

++(自增)--(自减)

 

案例一:

public class Test1{

public static void main(String[] args){

int a = 10;

int b = 10;

a++;// a = a+1;

++b;// b= b+1;

System.out.println("a="+a+",b="+b);//a=11,b=11;

}

}

分析:单独写a++或者++a时,都是相当于a=a+1.





▼关系运算符

>>=<<===!=

注意:==是判断相等,得到布尔值 truefalse

=是赋值

 

▼逻辑运算符

&&(与)、||(或)、!(非)

 

▼位运算符

&()|(或)、^(异或)

 

位运算将两个数转化成二进制再进行运算,
&按位求与,两位都为1才为1

| 按位求或,两位有一个为1就为1

^ 异或,两位不同才为1,两位相同就为0

 

案例:

 



▼赋值运算符

=

注意:==是判断相等,得到布尔值 truefalse

=是赋值

 

补充:键盘输入

案例一:定义整数,求出他的平方值




案例一:从键盘输入一个整数,求出他的平方值

import java.util.*;//1.导包

public class Test1{

public static void main(String[] args){

int x,y;

Scanner s = new Scanner(System.in);//2.创建一个输入对象 s

System.out.print("请输入一个整数:");

x = s.nextInt();//3.键盘输入

y = x*x;

System.out.println(x+"的平方="+y);

}

}

 

案例二:从键盘输入两个整数,求出他的乘积。

import java.util.*;//导包

public class Test1{

public static void main(String[] args){

int a,b,x;

Scanner s = new Scanner(System.in);//创建键盘输入对象 s

System.out.print("请输入a的值:");

a = s.nextInt();//从键盘输入一个值给到a

System.out.print("请输入b的值:");

b = s.nextInt();//从键盘输入一个值给到b

x = a*b;

System.out.println(a+"*"+b+"="+x);

}

}

 

案例三:从键盘输入一个三位正整数,求出他的各位数的和

import java.util.*;

public class Test2{

public static void main(String[] args){

int x,gw,sw,bw,sum;

Scanner s = new Scanner(System.in);

System.out.print("请输入一个三位整数:");

x = s.nextInt();

gw = x%10;    // 123%10=3

sw = (x%100)/10;  // 123%100=23  23/10=2

bw = x/100;  // 123/100=1

sum = gw+sw+bw;

System.out.println(x+"的各位数和="+sum);

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值