达内课程-JAVA八种基本类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010356768/article/details/70768394

8种基本类型

byte  1字节;-128~127;-2^7~2^7-1
short  2字节;-2^15~2^15-1
int  4字节;-2^31~2^31-1
long  8字节;-2^63~2^63-1
float  4字节;单精度
double  8字节;双精度
char  2字节;
boolean  1字节;

byte->字节=8bit
电脑中的数据都是二进制,用01表示高低电位,每位为1bit(比特),每8位为1字节
如果你的电脑是4G内存,换算成字节是1024\(K)*1024(M)*1024(G)*4字节

bit——–比特
byte——–1字节
kb——–1024byte;
mb——–1024kb
gb——–1024mb
tb——–1024gb
pb——–1024tb

java中byte是8bit,用二进制表示数字如下,逢2进1

00000000——–0
00000001——–1
00000010——–2
00000011——–3
00000100——–4
.
.
.
11111111——–255

由于java中左边第一位不参与计数而是用来表示正负,0表示正数,1表示负数,所以byte的范围如下

10000000——– -128
.
.
.
11111101——– -3
11111110——– -2
11111111——– -1
00000000——–0
.
.
.
01111111——–127

二进制计算十进制

二进制转十进制
01111111转换成十进制数可以这样计算,每位的数字后有几位就乘2的几次方,所以计算过程如下:
1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0=
2^6+2^5+2^4+2^3+2^2+2^1+2^0=127

常见二进制和十进制转换
1    1
10    2
100    4
1000    8
100000    32
1000000    64
10000000    128

规律很简单,每加1个0,x2

练习1:显示byte,short,int,long的最大值最小值

        TextView tv = (TextView)findViewById(R.id.textView1);
        byte a = -128;
        byte b = 127;

        short c = Short.MIN_VALUE;
        short d = Short.MAX_VALUE;

        int e = Integer.MIN_VALUE;
        int f = Integer.MAX_VALUE;

        long g = Long.MIN_VALUE;
        long h = Long.MAX_VALUE;

        float i = Float.MAX_VALUE;
        float j = Float.MIN_VALUE;

        Double k = Double.MAX_VALUE;
        Double l = Double.MIN_VALUE;

        tv.setText(String.valueOf(a));
        tv.append("\n"+b);
        tv.append("\n"+c);
        tv.append("\n"+d);
        tv.append("\n"+e);
        tv.append("\n"+f);
        tv.append("\n"+g);
        tv.append("\n"+h);
        tv.append("\n"+i);
        tv.append("\n"+j);
        tv.append("\n"+k);
        tv.append("\n"+l);

练习2:交换变量

xml文件

<EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="交换"
        android:onClick="doClick"/>

java文件

public void doClick(View view){
        EditText et1 = (EditText)findViewById(R.id.editText);
        EditText et2 = (EditText)findViewById(R.id.editText2);
        TextView tv = (TextView)findViewById(R.id.textView1);
        Button bt = (Button)findViewById(R.id.button1);

        String a = et1.getText().toString();
        String b = et2.getText().toString();
        String c = "";

        c = a;
        a = b;
        b = c;

        tv.setText("a="+a);
        tv.append("\nb="+b);
    }

2E4 表示2x10^4

Double练习,求自由落体距离

xml代码

<EditText
            android:id="@+id/et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="输入落体时间"
            />
        <Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="求降落距离"
            android:onClick="doClick"
            />
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

java代码

public void doClick(View view){
        TextView tv = (TextView)findViewById(R.id.tv);
        EditText et = (EditText) findViewById(R.id.et);

        Double t = Double.parseDouble(et.getText().toString());
        Double d = 0.5*9.8*t*t;

        tv.setText("降落距离为"+d);
    }

Char

1字节,0-65535
表示字符,或表示字符的数字编码值

char c1 = 'a';
char c2 = 97;

输出:
a
a

boolean

1字节
真 true 00000001
假 false 00000000

基本类型的字面值

1、整数字面值是int类型
int a = 123;
long b = 9999999999;//错,右侧是int,但超出范围

2、byte、short、char
这三种比int范围小的整数,可以在范围内直接赋值
byte a = 127;//对,是byte类型
byte b = 128;//错,是int类型

3、浮点数字面值是double类型
double a = 3.14
float b = 3.14;//错,是double类型

4、后缀
L long
long a = 9999999999L;//这样写是正确的
F float
float a = 3.14F;
D double
double a = 3.0;
double a = 3D;

5、进制前缀
0x 16进制
0 8进制
\u char类型16进制

二进制中的每四位可用16进制中的一位表示
0123456789abcdef
0101 5
1101&emps;d

二进制中的每三位可用8进制中一位表示
01234567
000 0
101 5

‘\u0061’十进制的97,代表a,必须写完整的两个字节

基本类型运算规则

1、运算结果的数据类型
与运算类型范围最大的一致

3/2=1//都是int,结果为int
3d/2=1.5//3d为double类型,运算范围大,所以结果为double

2、byte/short/char三种比int范围小的整数
运算时先转成int

byte a = 2;
byte b = 3;
byte c = a + b;//错,因为a,b此时是int,运算结果也是int

3、整数运算溢出

Integer.MAX_VALUE + 1 运算结果会溢出,变成Integer.MIN_VALUE

运算光年的距离:
300000000*60*60*24*365
这样写是错误的,因为头两个数相乘已经超出了int类型,正确写法应该是
300000000L*60*60*24*365

4、浮点数运算不精确

System.out.println(2-1.9);

输出:0.10000000000000009

5、浮点数的特殊值

Infinity
去穷大
用浮点数/0会得到无穷大

System.out.println(3.14/0);

输出:Infinity

Nan
Not a number
Math.sqrt(负数)会得到Nan

System.out.println(Math.sqrt(-1));

输出:Nan

数据类型转换

数据范围小->数据范围大
直接转换即可

byte a = 127;
int b = a;

运算过程如下:
01111111
00000000 00000000 00000000 01111111
byte a = -128;
int b = a;

运算过程如下:
10000000
11111111 11111111 11111111 10000000

数据范围大->数据范围小

int a = 127;
byte b = (byte)a;

运算过程如下:
int4字节,127表示如下
00000000 00000000 00000000 01111111
byte1字节,左移舍弃前面301111111

练习,牛郎织女相会需要多少只喜鹊

牛栏织女相聚14.6光年
光速299792458米/s
喜鹊身长0.46米
求需要喜鹊数量

        //1光年距离
        long ly = 299792458L*60*60*24*365;
        //牛郎织女距离
        double d = 14.6*ly;
        //求喜鹊数量
        double s = d/0.46;
        //对喜鹊数量向上取整
        long l = (long)Math.ceil(s);
        System.out.println(l);

java源文件

1、文件名与公共类名相同
HelloWord.java
public class HelloWord{
}
2、package包
其实就是文件夹
3、import包
指明类存放的路径,在后面用的时候可以简写类名,如果不导入包,需要写明全路径
好的做法是指明明确的类,而不使用*

展开阅读全文

没有更多推荐了,返回首页