JAVA学习笔记(四)基本数据类型

书接上回,该轮到基本数据类型了。

另外,上一章的文字连接在这里:

JAVA学习笔记(三) 实现类

目录

一、数字

1.数字类型

2.常量

二、算术运算

1.算数操作符

2.运算

三、输入与输出

1.读取输入

2.格式化输出

四、字符串

1.String类型

2.字符串连接

3.转义序列

4.与字符的区别

5.子串


一、数字

1.数字类型

类型描述大小
int整数类型(-2147483648~2147483647)4字节
byte描述一个单字节的类型(-128~127)1字节
short短整数类型(-32768~32767)2字节
long长整数类型8字节
double双精度浮点数(\pm 10^{308})8字节
float单精度浮点数(\pm 10^{38})4字节
char字符类型2字节
boolean有两个类型,true和false1位

int a = -6 ;
// 这里的a的可以是正负值,也可以是0
double b=2.96E-2
// 这里b的意思是2.96*10^(-2)
// 这里b也可以是1.0或0.5

2.常量

程序员是非常讨厌“魔法数”的,什么是“魔法数”?就是说有些东西,当你去透彻了解一个程序的原理后,你很容易理解,但是初识的时候很容易看不明白。比如这里直接说:c=a*24,那么问题来了。这里的24是什么意思?看不懂吧!实际上它是一天有24小时的意思,如果我们这样:int DAY_HOURS=24;但请记住,这个时候我们仍然认为这是变量。

注意,编程中总有一些变量的值是希望保持不变的,这就需要用到保留字final使之成为常量。并且吧,程序员习惯之中还有一条不言的规则:final后用全大写的字母名字,如final int DAY_HOURS

一个类里面很可能包含多个方法,而这些方法也会有一些是共享常量的。那么statics这个保留字就是用来表示这个常量是属于这个类的。

再思考一下,一些常量难道只有一个类可以使用吗?如果共享会不会有危险?答案是有的情况下,多个类会共享常量,而且这样的举动不会有危险——因为常量嘛,所以就不会被改变。这要怎么实现呢?使用public就可以了。

public static final int DAY_HOURS=24;

二、算术运算

1.算数操作符

Java支持4个基本算术运算(加+、减-、乘*、除/),如果要改变优先级,就可以使用括号()。另外,如果在一个算术表达式中混合整数和浮点数,那么结果是浮点数。例如,7+4.0=11.0。

2.运算

// 自增自减是比较常见的用处
count++;
count--;
// 整除&求余
// 如果/的两个参数都是整数,余数将被丢弃
7.0 / 4.0 
7 / 4.0
7.0 / 4
//答案都是1.75
7 / 4
// 答案是1
7 % 4
// 取余答案是3
-19 % 10
// 取余答案是-9

三、输入与输出

1.读取输入

如果让用户提供输入而不是我们早已经指定好的值,那么我们的程序将会更加灵活。这个在Python里面是input,但是在Java里面就比较麻烦了。

之所以麻烦是因为最初设计Java的时候,没有太注意键盘输入。当时认为所有程序员都会生成带有文本框和菜单的用户图形界面。所以只为System.in提供了最低限度的一组特性,这导致必须结合其他类,才能真正发挥作用。

// 举一个实例

import java.util.Scanner;

public class E_Thirteen {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Please enter an integer 1,000 and 999,999: ");
        String input_num = in.nextLine();
        // nextLine()其实和next()都是读取字符串的,但是前者会自动去除第一个有效字符前的空串
        // 除了nextLine(),还有其他数据类型的可输入选项,nextInt()、nextDouble
        String output_num = input_num.replace(",", "");
        System.out.println(output_num);
        in.close();// 如果不加这个的话,Scanner in = new Scanner(System.in);,这行代码会飘黄,资源泄漏问题还是比较严重的。

    }
}

//运行结果是
Please enter an integer 1,000 and 999,999: 2,200
2200

2.格式化输出

如果希望输出的是格式化的,最起码要有这样的语句:

System.out.printf();

// f就是format的意思

如果限制输出的小数点后的位数且对输出的占位有要求的话:

System.out.printf("%10.2f",1.21596);
// 结果就是1.22占4位,并且前面会有6个空格占6位

当然了也可以同时打印多个值:

System.out.printf("Chinese Scores:%d Math Scores: %10.2f",123,157.123);

此处还有一些使用规范:

格式串说明
"%5d"对整数使用d,且占位为5
"%7.2f"对浮点数使用,且占位为7
"%s"对字符串使用

四、字符串

1.String类型

String name = "abcd";
// 字符串变量是name
// 字符串字面量是"abcd"(用引号包围的字符串序列)

2.字符串连接

String First_Name = "Porter";
String Last_Name = "Harry";
String Name = Last_Name + Last_Name;
// 这得到的结果是"HarryPorter"
String Name = Last_Name + " " + Last_Name;
// 这得到的结果是"Harry Porter"

实际上,还有一些小细节。比如,字符串与数字连接,结果就直接是字符串。

3.转义序列

有些我们想要表达的内容,可能会与java语言本身有冲突,那么就需要转义了。比如我们想要打印一句:他在计算机上输出"hello,world"来表达初次接触计算机世界的喜悦。那么那一对双引号就麻烦了,该怎么让计算机识别呢?这样就行:

System.out.printf("他在计算机上输出\"hello,world\"来表达初次接触计算机世界的喜悦");

这个反斜杠\就是转义字符了,只需要在需要转义的内容前用它就可以了。

另一个常见的像\n就表示换行

4.与字符的区别

字符串是Unicode字符序列,在Java里面,字符是char类型的一个值。事实上,字符是有数值的,它的编码有数字的。

并且有一个比较容易区分的是:字符的字面量是用单引号界定。'H'是一个字符,char类型的数值;"H"是一个包含单字符的字符串,是String类型的。

另外还有一个比较实用的方法是charAt()方法,括号内的参数是索引值,索引的位置范围是字符串的位置范围:

String Greeting = "hello,world";
char Start = Greeting.charAt(0);
//结果是'h'

5.子串

主要是对substring方法的运用:

String Greeting = "hello,world";
String sub = Greeting.substring(0,5);
// sub是"hello"
// 0所处的参数位置填充的表示开始的字符位置
// 5所处的参数位置填充的表示结束的字符位置,且不包含这个字符
String tail = Greeting.substring(7);
// 表示从7开始到后面所有的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值