Java笔记入门Day2

Java笔记入门Day2一、数据类型二、变量与常量一、数据类型Java中一共8种基本类型,包括4种整型、2种浮点类型、1种字符类型char、1种布尔类型boolean1.整型类型储存需求取值范围int4字节-2,147,483,648 ~ 2,147,483,647(刚刚超过20亿)short2字节-32,768 ~ 32767long8字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
摘要由CSDN通过智能技术生成

一、数据类型

Java中一共8种基本类型,包括4种整型、2种浮点类型、1种字符类型char、1种布尔类型boolean

1.整型

类型储存需求取值范围
int4字节-2,147,483,648 ~ 2,147,483,647(刚刚超过20亿)
short2字节-32,768 ~ 32767
long8字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
byte1字节-128 ~ 127
  • 1.byte和short类型主要用于特定的应用场合,例如,底层的文件处理或者存储空间很宝贵时的大数组;
  • 2.由于Java程序必须保证在所有机器上都能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。
    长整型数值后缀有L或者l(例如400000000L)多用L表示 更加清楚
    十六进制数值有一个前缀0x或者0X(例如 0xCAFE)八进制前缀0(例如 010)
    八进制表示法比较容易混淆所以不推荐使用
    前缀0b或0B表示二进制,例如0b1001就是十进制的9;
    Java中可以通过加下划线使数值更易读,如1_000_000表示100万;

2.浮点类型

类型存储需求取值范围
float4字节大约±3.402 823 47E+38F(有效位数为6~7位)
double8字节大约±1.797 693 134 862 315 70E+308(有效位数为15位)

float类型的数值后缀F或f(例如3.14F),没加后缀的浮点数值默认为double类型
计算0/0或者负数的平方根结果为NaN
*ATTENTION:浮点数值不适用于无法接受舍入误差的金融计算。例如,命令System.out.println(2.0-1.1)将打印出0.899999999999999999,而不是人们期望的0.9。这种舍入误差的主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确地表示分数1/10。这种就像十进制无法精确地表示分数1/3一样。如果在数值计算中不允许有任何舍入误差,就应该使用BigDecimal类

3.char类型

char类型的字面量值要用单引号括起来。例如:'A’是编码值为65的字符常量。它与"A"不同,"A"是包含一个字符A的字符串。char类型的值可以表示为十六进制,其范围从\u0000到\uFFFF。例如,\u2122表示商标符号(™),\u03C0表示希腊字母π

转义序列名称Unicode值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
"双引号\u0022
单引号\u0027
\反斜杠\u005c

\u005B和\u005D分别是[ ]的编码

  • 警告:Unicode转义序列会在解析代码之前得到处理。例如,"\u0022+\u0022"并不是一个由引号(U+0022)包围加号构成的字符串。实际上,\u0022会在解析之前转换为",这会得到" “+” ",也就是一个空串
    更隐秘地,一定要当心注释中的\u。注释
    // \u000A is a newline
    会产生一个语法错误,因为读程序时\u00A0会替换为一个换行符。类似地,下面这个注释
    // look inside c:\users
    也会产生一个语法错误,因为\u后面并没有跟着4个十六进制数

4.Unicode和char类型

小编还没搞懂(《Java核心技术 卷1》p33-34)

5.boolean类型

boolean类型有两个值:false和true,用来判断逻辑条件
整型值和布尔值之间不能进行相互转换

二、变量与常量

1.声明变量

double salary;
int vacationDays;
long earthPopulation;
boolean done;

变量名必须是一个以字母开头并由字母或数字构成的序列。需要注意,与大多数程序设计语言相比,Java中“字母”和“数字”的范围更大。字母包括’A’ ~ ‘Z’ 、‘a’ ~ ‘z’ 、 ‘_’ 、’$'或在某种语言中表示字母的任何Unicode字符。
变量名中不能出现 '+'和 '©’这样的符号,空格也不行
不能使用Java保留名作为变量名

2.变量初始化

使用未初始化的变量的值时,Java编译器会报错

int vacationDays;
vacationDays = 12;

变量的声明应该尽可能地靠近变量第一次使用的地方

3.常量

常量名习惯上使用全大写
在Java中,经常希望某个常量可以在一个类的多个方法中使用,通常将这些常量成为类常量(class constant) 可以使用static final设置一个类常量

public class Constants
{
	public static final double CM_PER_INCH = 2.54;

	public static void main(String[] args)
	{
		double paperWidth = 8.5;
		double paperHeight = 11;
		System.out.println("Paper size in centimeters:" + paperWidth * CM_PER_INCH + " by " + paperHeight * CM_PER_INCH);
	}
}

类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且,如果一个常量被声明为public,那么其他类的方法也可以使用这个常量。

4.枚举类型

enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE };
Size s = Size.MEDIUM;

Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者特殊值null,null表示这个变量没有设置任何值

5.运算符

1)算术运算符
大部分同C语言要求,需要注意的是,整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果

2)数字函数与常量
在Math类中,包含了各种各样的数学函数
想要计算一个数值的平方根,可以使用sqrt方法:

double x = 4;
double y = Math.sqrt(x);
System.out.println(y);//prints 2.0

在Java中,没有幂运算,因此需要借助于Math类的pow方法。

double y = Math.pow(x,a);

将y的值设置为x的a次幂(xa) pow方法有两个double类型的参数,其返回结果也为double类型。
floorMod方法的目的是解决一个长期存在的有关整数余数的问题

下面考虑这个一个问题:计算一个时钟的位置。这里要做一个时间调整,而且要归一化为一个0~11之间的数。(position + adjustment)% 12。为了避免调整出现负数,可以使用floorMod方法
floorMod(position + adjustment,12)总会得到一个0~11之间的数。

Math类提供了一些常用的三角函数:

Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2

还有指数函数以及它的反函数——自然对数以及以10为底的对数:

Math.exp
Math.log
Math.log10	

Java还提供了两个用于表示π和e常量的最接近的近似值:

Math.PI
Math.E

不需要在数学方法名和常量名前添加前缀"Math",只要在源文件的顶部加上下面这行代码就可以了

import static java.lang.Math.*;

3)数值类型之间的转换
当用一个二元运算符连接两个值时(例如n + f,n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算

如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型
否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型
否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型
否则,两个操作数都将被转换为int类型

4)强制类型转换
强制类型转换可能损失信息;语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名,例如:

double x = 9.997;
int nx = (int )x;

这样,变量nx的值为9,因为强制类型转换通过截断小数部分将浮点值转换为整型;
如果想对浮点数进行舍入运算,那就需要使用Math.round方法:

double x = 9.997;
int nx = (int) Math.round(x);

现在,变量nx的值为10;
当调用round的时候,仍然需要使用强制类型转换(int)。其原因是round方法返回的结果为long类型,犹豫存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型、

5)结合赋值与运算符
同C语言
可以在赋值中使用二元运算符,例如:

x += 4;
//等价于
x = x + 4;

重点:如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。例如,如果x是一个int,则以下语句
x += 3.5;
是合法的,将把x设置为(int)(x + 3.5) 。

6)自增与自减运算符
同C语言,在此不赘述

7)关系和boolean运算符
同C语言,在此不赘述

8)位运算符

符号名称口诀
&与运算符有0出0,全1出1
|或运算符有1出1,全0出0
~非运算符二进制各位取反
^异或运算符相同出0,不同出1
<<左移运算符左移,低位补0
>>右移运算符右移,正,高位补0,负,则在高位补1
>>>右移运算符(无符号)无论正负,高位补0

位移运算符的右操作要完成模32的运算,例如1<<35的值等同于1<<3

参考博客:https://www.cnblogs.com/lichengze/p/5713409.html

9)括号和运算符级别
同C语言,在此不赘述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值