Java3——变量、API

本章涉及P35->61

写于 2024.7.9

类型

String name=" ";
char n='';

使用细节

不同的数据类型所占空间不同,int—4字节,double—8字节。

该区域的值/数据可以在同一类型范围内不断变化。

变量在同一个作用域不可以重名。

加号的使用

左右两边都是数值型,做加法运算。

左右有一方为字符串,做拼接运算。

System.out.println("100"+98);
此时为左边字符串,右边数值,做拼接运算。

运算顺序从左到右。

数据类型

1、Java是强类型语言,每种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。

基本数据类型

整数类型,存放byte,short,int,long[8字节]

byte:1字节,-128—127。

类推,2字节,正负2的15次方(编码方法)

浮点类型,float[4],double[8]

字符型,char[2]

布尔类型,boolean[1]

引用数据类型

类(比如String)

接口interface

数组

整型使用细节

1、Java各整数类型的字段长度不受具体OS的影响。

2、整型常量(具体值)默认为int型,如声明long型常量:

int n1 = 1l;
int n2 = 1L;
以上均是错误写法,long8字节,int4字节。
long n3 = 1L;正确

尽量常使用int。

3、bit是计算机最小存储单位,1byte = 8bit。

浮点类型使用细节

1、浮点数在机器中存放形式:符号位+指数位+尾数位。

2、尾数部分可能丢失造成精度损失,只表现为近似值。

3、Java默认浮点为double,使用float应该后面加f或F。

几种正确使用方法如下:

double num1 = 1.1;
double num2 = 1.1f;正确,因为double比float字节数大
float num3 = 1.1f;
float num4 = 1.1F;
double num5 = .123; 相当于0.123,小数点不可以省略。
科学计数法:
5.12e2;
5.12E-2;
以上两项均是保存小数点的小数类型。

4、通常情况使用double,因为比float更加精确。

5、浮点数使用陷阱:2.7与8.1 / 3比较。

2.7是一个准确的小数,而8.1 / 3是一个接近2.7的小数,可能是2.699999。

因为小数是以精度的方式计算的。

启示:当我们对运算结果是小数的进行相等判断时需要小心。应该以两个数的差值的绝对值,在某个精度范围类判断。

两个赋值2.7的值直接判相等是能通过的,两者在下列代码的函数中计算差值结果为0。(原因与上面说的2.7是一个准确的小数,而8.1 / 3是一个接近2.7的小数,可能是2.699999。因为小数是以精度的方式计算的。有关

正确写法:
if(Math.abs(num1-num2) < 0.00001){
//两数相等
上面函数返回一个差值
}

6、ctrl + \,对选中的多行进行注释添加或取消的快捷键。

Java API 文档

JDK8中文版在线网址:https://www.matools.com。

查找顺序:包->类->方法,或直接用索引。

字符类型

1、占两个字节,可以存汉字。也可以存一个转义字符(\t)。

字符常量用两个单引号引起来。

char c1 = 'a';
char c2 = '\t';
char c3 = '汉';
char c4 = 97;<-字符类型可以直接存一个数字。
存放数字时,输出c4会输出97表示的字母,ASCII码。
System.out.println((int)c1);->可以输出该字符的码。

2、如上所示,字符类型的本质是整数。

3、如2所示,char类型可以参与运算。如:

System.out.println('a' + 10);

ASCII码

占一个字节,可以表示256个字符,实际只用了128个字符。

最前面一位统一为0.

unicode码兼容ASCII码。

utf-8

是互联网上使用最广的一种Unicode的实现方式。

是一种变长的编码方式。

boolean类型

占1个字节。

与C不同:不可以用0或非0的整数代替false, true。

基本数据类型的转换

自动类型转换

精度小的类型可以自动转换成精度大的类型。

例如,可以把一个字符赋给一个int类型。

重要结论!没事儿多看看!:

7、赋值给byte的时候,要确认数字范围在-128到127之间,比如把1000赋值给byte就会报错。

上述中第一条举例说明如下:

第一条:
double n1 = 10;
float ans = n1 + 1.1;
这种情况会报错。

第四条:
byte b1 = 2;
short b2 = 3;
short a1 = b1 + b2;错误!
int a2 = b1 + b2;正确!

强制类型转换 

可以将容量大的数据类型转为容量小的。

int i = (int)1.9;
此时 i 的值为1.

隐患:

1、精度损失。

2、数据溢出。(如2000强制赋值给byte类型得到-48)

使用细节:

1、char类型可以保存int常量值,不可保存变量值,需要强制转换。

char c1 = 100; ok
int m = 100;
char c2 = m; wrong
char c3 = (char)m; ok

2、byte和short,char类型在进行运算时,当作int类型处理。

类型转换练习

short s = 12;
s = s - 9; wrong,应赋值给int型
byte b = 10;
b = (byte)(b + 11); ok

基本数据类型和String类型的转换

基本数据类型->字符串

float f = 1f;
boolean b = true;
String s1 = f + "";
String s2 = b + "";

字符串->基本数据类型

      Integer.parseInt("123");
      Double.parseDouble("123.1");
      Float.parseFloat("1.45");
      Short.parseShort("12");
      Long.parseLong("1");
      Boolean.parseBoolean("true");
      Byte.parseByte("12");
      //具体使用
      String tmp = "123.5";
      double ans = Double.parseDouble(tmp);
      //字符串到字符的转换
      System.out.println(tmp.charAt(0));//取第一个字符

使用细节:

抛出异常是在程序运行的时候,而非程序编译的时候。

java temp的时候,不是javac temp.java的时候 

本章练习(部分)

        char c;
        c = '\n';
        System.out.println(c);
        c = '\t';
        System.out.println(c);
        c = '\r';
        System.out.println(c);
        c = '\\';
        System.out.println(c);
        c = '1';
        System.out.println(c);
        String s1,s2;
        s1 = "书1";
        s2 = "书2";
        System.out.println(s1 + s2);
        //此题考加号的用法:加号两侧如果有至少一个字符串,则加号作用为字符串拼接
        System.out.println("姓名"+"\t\t"+"年龄"+'\t'+"成绩"+'\t'+"性别");
        System.out.println("xx"+"\t\t"+"xx"+'\t'+"xx"+'\t'+"xx");
  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值