javaSE学习-1-数据类型与运算符

目录

字面常量

数据类型

int

Long

short

Byte

float

double

char

boolean

类型转换

强转

自动类型转换(隐式)

字符串类型

字符串和整形数字之间进行转换


字面常量

比如 System.Out.println("Hello World") 语句,不论程序何时运行,输出的都是 Hello
World ,其实 "Hello World" 就是字面常量
常量即程序运行期间,固定不变的量称为常量 ,比如:一个礼拜七天,一年 12 个月等。
1. 字符串常量:由""括起来的,比如“12345”“hello”你好
2. 整形常量:程序中直接写的数字(注意没有小数点),比如:1001000
3. 浮点数常量:程序中直接写的小数,比如:3.140.49
4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’‘1’
5. 布尔常量:只有两种truefalse
6. 空常量:null(后面了讲)
public class Main {
    public static void main(String[] args) {
        System.out.println("HelloWorld");
        System.out.println("A");
        System.out.println(100);
        System.out.println(3.14);
        System.out.println(true);
        System.out.println(false);

    }
}

数据类型

Java 中数据类型主要分为两类: 基本数据类型 引用数据类型
基本数据类型有四类八种
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:
整数型: byte short int long
小数型: float double
字符型: char
布尔类型: Boolean
注意: 
不论是在 16 位系统还是 32 位系统, int都占用4个字节,long都占8个字节
整形和浮点型都是带有符号的
整型默认为 int 型,浮点型默认为 double
符串属于引用类型 后面会讲到

int

在idea中输入main回车直接出现

输入sout回车

也可以变量名加"."加sout

ps:有没有人知道怎么粘贴图片的时候默认不加水印 每一个图片都加水印很影响观感

在java中,int类型长度为四个字节,4Byte = 8*4bit = 32,就是32位,因为java中,数据类型都是有符号数,那么就是1位符号位, 31位数值位 0表示正数,1表示负数

最大: 01111111 11111111 11111111 11111111

最小: 1000000 00000000 0000000 0000000

因为存的是补码,以上是附属最小值

下面这个是附属最小值-1

11111111 11111111 11111111 11111111

    public static void main(String[] args) {
        int a = 10;
        System.out.println(a);
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }
10
2147483647
-2147483648

Integer是整数的意思, 在java中叫做包装类型, 输入Integer.可以找到int类型的最大值和最小值

或者按住ctrl,mac上是command, 单击integer, 可以找到

Long

long占8位

long a = 10L;
        System.out.println(a);

赋值long类型变量时,需要加"L", 不推荐加小写的'l', 因为会认成1

short

short类型, 占2个字节, 有16位

取值范围是-2^15到2^15-1

short a = 19;
        System.out.println(a);
        System.out.println(Short.MIN_VALUE);
        System.out.println(Short.MAX_VALUE);
19
-32768
32767

Byte

只有一个字节

8个比特位

-2^7到2^7-1

byte a = 10;
        System.out.println(a);
        System.out.println(Byte.MIN_VALUE);
        System.out.println(Byte.MAX_VALUE);
10
-128
127

赋值为200时,发现报错,并不会直接像c语言那样溢出, 而是报错,可见java是非常严谨的

以上是整数型,接下来是小数型

float

赋值时需要在屁股加个f, 不然编译器会认为是double类型, 会报错

加了f, 才会认为是float的数据

包装类型是大写的F开头的Float

float a = 12.5f;
        System.out.println(a);
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_VALUE);
12.5
1.4E-45
3.4028235E38

注意, ctrl+D或者mac上command+D可以快捷复制一行内容到下一行,并且不占用剪切板

double

double a = 10.5;
        System.out.println(a);
        System.out.println(Double.MIN_VALUE);
        System.out.println(Double.MAX_VALUE);

赋值的时候可以不用加d

10.5
4.9E-324
1.7976931348623157E308

需要注意的是, 

System.out.println(1/2);

不会输出0.5而是0

想要输出0.5应该使用

System.out.println(1.0/2);

另外一个需要注意的是,小数没有非常精确的值

double dd = 1.1;
        System.out.println(dd*dd);

理论上是1.21

实际上是

1.2100000000000002

接下来是字符类型

char

占用两个字节

char ch = 'a';
        System.out.println(ch);
a

一个汉字占用两个字节

那么 字符类型可以存储汉族

因为java使用的是Unicode编码字符集,包含了许多字符

c语言使用的ASCLL码表示的少得多, 这点需要适应

char ch = '赣';
注意事项 :
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值
执行 javac 的时候可能出现以下错误 :
此时我们在执行 javac 时加上 -encoding UTF-8 选项即可
javac -encoding UTF-8 Test.java
char 的包装类型为 Character
接下来是Boolean类型

boolean

boolean a = true;
        System.out.println(a);

java中boolean类型只有两个值, 没有0表示假, 非零表示真

并且 boolean类型没有明确的大小

但是 有些书会说,占用一个字节, 有些说占一个bit位

JVM,Java虚拟机没有规定

Java 虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理 boolean 的字节码指令,在 Oracle公司的虚拟机实现中, boolean 1 个字节

类型转换

int a = 10;
        long b = 100L;
        b = a; // 可以通过编译
        a = b; // 编译失败
不允许把8个字节放进4个字节
不能大转小,会发生截断
只能小转大

强转

int a = 10;
        long b = 100L;
        a = (int)b;

int到long,强转,强制类型转换,编译器不管了,这种是等于自己按手印, 编译器不管了

自动类型转换(隐式)

自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点: 数据范围小的转为数 据范围大的时会自动进行
System.out.println(1024); // 整型默认情况下是int
        System.out.println(3.14); // 浮点型默认情况下是double
​
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全

​

隐式类型转换大多存在于小类型到大类型

float f = 3.14F;
double d = 5.12;
d = f; // 编译器会将f转换为double,然后进行赋值
f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全
byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失

int a = 10;
long b = 10L;
int c = a + b;

报错,解决方法是把a+b的值强制转换为int

int c = (int)(a + b);

还有一个解决方法,是推荐的方法, 使用类型提升,小类型提升为大类型

byte b1 = 10;
        byte b2 = 20;
        byte b3 = b1 + b2;

会报错,原因是小于四个字节的,会提升为四个字节的进行运算

因此b3只能使用int赋值了

因为计算机是以4个字节为单位从内存中来存储和读取内容的

类型提升小结 :
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算 .

字符串类型

这里先讲解一下字符串类型, 因为很早就会接触到
String为字符串类型, 属于引用类型, 因为String类型变量存储的是首元素的地址
因为是引用类型,所以首字母是大写 String
并且 java中
字符串没有以'\0'结尾的说法
String str1 = "hello ";
        String str2 = "world";
        String str3 = str1 + str2;

        System.out.println(str3);

字符串的拼接十分方便

int a = 10;
System.out.println("a = " + a);

java当中的字符串 和其他数据类型进行 + 操作的时候 就是拼接

int a = 10;
        int b = 20;
        System.out.println("a = " + a + b);
30==a+b

那这个输出多少呢

a = 1020

这是因为

"a = " + a + b先与"a = " + a进行运算了, 得到a = 10, 然后再与b拼接

那怎么输出a+b呢

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

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

这个段代码呢

从左到右计算的

输出

字符串和整形数字之间进行转换

在有些情况下,需要将字符串和整形数字之间进行转换:

String str = "123";
        int val = Integer.parseInt(str);
        System.out.println(val);

在idea中双击shift就能搜索到Integer方法, 找到他的源码

点击structure就能找到

那么怎么从int转回字符串呢

String str = "123";
        int val = Integer.parseInt(str);
        System.out.println(val);

        String str2 = String.valueOf(val);
        System.out.println(str2);

        String str3 = val + "";
        System.out.println(str3);

        String str4 = Integer.toString(val);
        System.out.println(str4);

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值