Java学习日记三

一、基本数据类型

浮点型 

浮点型可分为float,double两种类型
1.float
        类型关键字:float
        内存存储占用4个字节,32位
        存储数据范围:1.4E-45~3.4028235E38
 注意:
        Java中小数默认是double类型,赋值时要加个F或者f,如: 

float f = 175.5;//声明一个float类型变量
System.out.println(f);//编译的时候报 错误: 不兼容的类型: 从double转换到float可能会有损失
			
float f1 = 175.5f//正确形式

2.double
        类型关键字:double
        内存存储占用8个字节,64位
        存储数据范围:4.9E-324~1.7976931348623157E308


字符型
        类型关键字:char
        内存存储占用2个字节,16位
        存储数据范围:0~65535(存储数字)
        Java中使用char类型存储单个字符,jvm对字符采用Unicode无符号进行编码。
        char类型可以存储数字0~65535范围内的非负数。
        char类型可以与int类型兼容。

char ch = ' ';
ch = 97;
System.out.println(ch);//输出一个a 说明a在计算机中是以97这个值来存储的

        但是直接把int类型的变量赋值给char类型的变量是不行的,如:

int num = 100;
char c;
c = num;
System.out.println(c);//编译时报错:错误: 不兼容的类型: 从int转换到char可能会有损失

         因为变量的值是在运行中才会确定的,int类型的精度大于char类型,所以会报错。
         解决这个问题就要用到强制转换,如:

char ch;
int num = 5000;
ch3 = (char)num;
System.out.println(ch);

        这样就解决了编译时报错的问题。 


布尔型
        类型关键字:boolean
        内存存储占用4个字节,32位
        存储数据范围:true和false


二、数据类型的转换

自然转换
        由低精度向高精度数据类型转换称为自然转换,也就是存储范围小的变量赋值给存储范围大的变量。
        数值型的变量存储的范围从小到大的排序是byte->short->int->long->float->double
强制转换
        由高精度向低精度数据类型转换称为强制转换,也就是存储范围大的变量赋值给存储范围小的变量。
        表现形式是在值的前面加(要转的数据类型) 如: 

double d = 255.50;
float f = 254.50f;
long l = 80000;
int i = 56;
f = (float)d;//强制转换
l = (long)f;//强制转换
i = (int)l;//强制转换

 

三、运算符

Java中的运算符分为赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、特殊运算符这几种。
    1.赋值运算符
        常见的有:=、+=、-=、*=、/=、%=
    2.算术运算符
        常见的有:+、-、*、/、%、++、--
        其中++、--称为自增、自减运算符,它的计算方式与它所在的位置有关,
        ++运算符在变量后是先与其他变量进行运算再自增,如: 

int n = 5;
int m = 6;
int sum;
sum = n++ + m;//++在变量后面,当n与m相加的时候是先拿n的值5与m的值6相加,然后n再自加1等于6;
System.out.println(sum);//输出11
System.out.println(n);//输出6

        ++运算符在变量前是先自增再与其他变量进行运算,如: 

int n = 5;
int m = 6;
int sum;
sum = ++n + m;//++在变量前面,当n与m相加的时候是先n加1再拿n的值6与m的值6相加;
System.out.println(sum);//输出12
System.out.println(n);//输出6

        --的运算与++同理。 


四、补充

(1)基本数据类型都有包装类
        byte--Byte
        short--Short
        int--Integer
        long--Long
        float--Float
        double--Double
        学习了MAX_VALUE、MIN_VALUE、toBinaryString()的使用
 (2)控制台输入Scanner
        使用Scanner要先import java.util.Scanner包
        然后定义 Scanner input = new Scanner(System.in);
        就可以用 input.next() 、input.nextInt()、input.nextFloat()等方法输入各种值了。
 (3)强制转换时范围溢出
        比如int类型的值129强制转换到byte类型,byte类型范围是到127,程序就会输出-127

int num2 = 129;
byte by = (byte)num2;
System.out.println(by);//输出-127;


        那么这个-127是怎么来的呢?


        首先计算机存储数据采用的是二进制补码的形式;一个正数的原码、反码、补码都是一样的。一个负数的补码是它的反码            +1,反码是原码的取反。
        129的二进制是10000001,转成byte是8位,截取8个,原码的表现形式是首位是符号位1表示负数0表示正数,所以

        1 0000001是个负数
        1 0000001它的反码就是符号位不变其余取反1 1111110 补码就是符号位不变其余+1 1 1111111 
        1111111转成10进制就是127加上符号位就是-127。 


记录结束。。。。。

你可能感兴趣的:(Java,学习记录)