Java01:数据类型与运算符

一 数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型。

1 基本数据类型
  • “字节”是byte,“位”是bit ;
  • 1 byte = 8 bit ;
  • Java中采用unicode编码,2个字节(16位)来表示一个字符,无论是汉字还是数字,字母,或其他语言都可以存储。而char 在Java中也是2个字节,所以可以存储中文,int是4个字节所以也可以。
public static void main(String[] args) {
    int a='男';
    char ch='男';
}
类型内存占用数据范围
byte1个字节-128~127
short2个字节-32768~32767 即:-215~215-1
int4个字节-231~231-1
long8个字节-263~263-1
float4个字节1.4013E-45~3.4028E+38
double8个字节4.9E-324~1.7977E+308
char2个字节0~65535
boolean1个字节true, false

整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean

注意:

  • Java中有一个BigInteger类,可以对任意精度的整数进行计算.但是需要用方法调用的方式来实现运算。abs(),add(),divide(),multiply(),pow(),toString()
    例题:BigInteger
		String s1=input.next();
        String s2=input.next();
        BigInteger num1=new BigInteger(s1);
        BigInteger num2=new BigInteger(s2);
        System.out.println(num1.add(num2));
  • BigDecimal可以支持任何精度的定点数。
2 引用数据类型

字符串、数组、类、接口、lambda

注意:

  1. 浮点型可能只是一个近似值,并非精确的值。
  2. 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节。
  3. 浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。
  4. 如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。

3 变量

创建变量

数据类型 变量名;
变量名 = 数据值;

数据类型 变量名 = 数据值;

对于浮点型,要么后面加F,float num1 = 2.5F;要么使用强制类型转换float num1 = (float)2.5

 	long num = 300000000L;
	float num1 = 2.5F;
	
	float num2 = 2.5 //错误的,2.5是双精度类型,转成浮点型会造成精度损失
3 字符串类型变量:
String name = "rock";
System.out.println(name);

转义字符:

\n换行
\t水平制表符
\’单引号
\"双引号
\反斜杠

字符串的+操作,表示字符串拼接:

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

可以与整数进行拼接:

String a = "hello";
int b = 10;
System.out.println(a+b);//hello10

注意:
(1) 对于float和long类型,要在数据之后加F和L
(2) 对于byte和short类型,右侧数据不能超过左侧数据范围
(3) 变量一定要赋值后才能使用。
(4) 变量不能超过作用域的范围:从定义变量的一行开始,到所属的大括号{}结束
(5) 可以一个语句建立多个变量(不推荐)

int a,b,c;
int a=3, b=4, c=5;
4 常量

(1) 字面值常量

  • 字符串常量:双引号 ’’ ‘’ 引起来的部分, ”hello”,字符串可以为空
  • 整数常量:100
  • 浮点数常量: 有小数点 0.0
  • 字符常量:单引号 ‘ ’ 引起来的字符,字符不能为空,且只能有一个(空格也可以)
  • 布尔常量:true false
  • 空常量:null 代表没有任何数据,不能用来打印输出//System.out.println(null) 报错

字面值常量
(2) final关键字修饰的常量

final int a =10;
a=20;//编译出错

常量在程序运行过程中不能进行修改

5 变量的命名规则

关键字: 全是小写字母
标识符: 字母大小写、数字、$、下划线_ , 不能以数字开头

命名规范:
类名:大驼峰式。GetNum
方法名/变量名:小驼峰式. getNum

注释:

//单行注释

/*  多行注释
多行注释
*/

/** 文档注释 */
6 类型转换

(1) 自动类型转换:
容量小的数据类型可以自动转换成容量大的数据类型,数据范围从小到大。
long num=100; //右侧为默认的int类型,左侧为long类型
在这里插入图片描述
注:
long转float可能存在精度损失

(2) 强制类型转换:(可能发生精度损失、数据溢出)
int num = (int) 100L; // >>> num=100
int num = (int) 3.5; // >>> num = 3

byte/short/char可以进行数学运算,运算时会先提升为int类型
boolean不能发生数据类型转换,false/true

        byte a=3;
        byte b=5;
        byte c = a+b;//编译时报错: a+b在运算时会提升为int类型
        
        a+=b;//相当于a=byte(a+b),其中隐含了强制类型转换

注:

  • 整型常量赋值给byte, short, char等类型变量,不需要进行强制类型转换的前提是不超出其表述范围,否则必须进行强制转换。
  • a+=b;//相当于a=byte(a+b),其中隐含了强制类型转换
7 运算符

(1) 算数运算符

+加法,字符串连接
-
*
/
%取模运算,两个数字相除取余)
++,- -自增、自减

对于运算中的不同类型,结果将会是数据范围大的哪个
+符号在遇到字符串(String)的时候,表示连接、拼接的含义。
“a” + “b” >>>”ab”

任何数据类型与字符串进行连接的时候,结果都会变成字符串
%操作也能针对double类型进行操作

String str1 = “java”;
System.out.println(str1 + 99 + 21 )  >>>java9921
System.out.println(str1 + (99 + 21) )  
>>>java120  //改变优先级 

自增自减运算(应用于变量)

int x = 50;
int y = 10;
int result = ++x + y-- ;
System.out.println(result)  >>>61
System.out.println(x)  >>>51

(2) 赋值运算符(增量赋值运算符)

=等于号
+=加等于
-=减等于
*=乘等于
/=除等于
%=取模等

(3)比较运算符(关系运算符)

==判断两边数据是否相等
<小于
>大于
<=小于等于
>=大于等于
!=不等于

运算结果都为布尔值(boolean类型):true/false
(4) 逻辑运算符

&&短路与
||短路或
!取反

注意:

  • &&:符号左边是false时,右边不再计算
  • ||:左边时true时,右边不再计算

(5) 位运算符(按二进制位运算)

位运算符:
&
|
~
^异或

注意:
对于位运算符 & 和 | ,当操作数为boolean的时候,也表示逻辑运算,但是不支持短路求值。

(5) 移位运算符

移位运算符
<<最左侧位舍弃,最右侧补0
>>最右侧位舍弃,最左侧位补符号位(正数补0,负数补1)
>>>无符号右移:最右侧舍弃,最左侧补0

没有无符号左移<<<:
只有右移时才会产生补零还是补1的问题,而左移时,无需考虑符号位,右侧都是补零,所以<<<和<<的概念是相同的,没必要再整一个无符号左移。

注意:
1).左移n位,相当于原数字*2的n次方,2<<3 =8
2).右移n位,相当于原数字/2的n次方,8>>3 = 1
3).计算机的移位效率要高于计算乘除,当乘除2的n次方时,可以用移位运算代替
4).移动负数位,或移位位数过大都没有意义

(6)条件运算符(三元运算符)

数据类型 变量名 = 布尔类型表达式? 结果1 :结果2  
//结果1,结果2要与数据类型一致
int max = a>b ? a : b;  //选取最大值

(7)枚举

enum Gender{
男,女
}
Gender gender = Gender.;

(8) 关键字

定义访问权限修饰符private, protected, public
定义类,函数,变量修饰符abstract, final, static, synchronized
定义类间关系extends, implements
建立实例,引用实例,判断实例new, this, super, instanceof
异常处理try, catch, finally, throw, throws
用于包package , import
其他native, strictfp, volatile, assert

注意:
private、protected不能修饰外部类

8 JDK中常用的包
  • java.lang:这个是系统的基础类;
  • java.io:这里面是所有输入输出有关的类,比如文件操作等;
  • java.nio:为了完善 io 包中的功能,提高 io 包中性能而写的一个新包;
  • java.net:这里面是与网络有关的类;
  • java.util:这个是系统辅助类,特别是集合类;
  • java.sql:这个是数据库操作的类。
9 java.lang.Object类的方法

(1) equals():比较对象的地址值是否相等,如果子类重写,则比较对象的内容是否相
等;
(2) hashCode() 获取哈希码
(3) toString() 把数据转变成字符串
(4) getClass() 获取类结构信息
(5) finalize() 垃圾回收前执行的方法
(6) clone()克隆
(7) wait() 多线程中等待功能
(8) notify() 多线程中唤醒功能
(9) notifyAll() 多线程中唤醒所有等待线程的功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值