文章目录

  • 一 数据类型
  • 1 基本数据类型
  • 2 引用数据类型
  • 3 字符串类型变量:
  • 4 常量
  • 5 变量的命名规则
  • 6 类型转换
  • 7 运算符
  • 8 JDK中常用的包
  • 9 java.lang.Object类的方法


一 数据类型

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='男';
}

类型

内存占用

数据范围

byte

1个字节

-128~127

short

2个字节

-32768~32767 即:-215~215-1

int

4个字节

-231~231-1

long

8个字节

-263~263-1

float

4个字节

1.4013E-45~3.4028E+38

double

8个字节

4.9E-324~1.7977E+308

char

2个字节

0~65535

boolean

1个字节

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) 报错

java 是否有汉字 java汉字用什么类型_数据


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

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

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

5 变量的命名规则

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

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

注释:

//单行注释

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

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

(1) 自动类型转换:

容量小的数据类型可以自动转换成容量大的数据类型,数据范围从小到大。

long num=100; //右侧为默认的int类型,左侧为long类型

java 是否有汉字 java汉字用什么类型_数据类型_02


注:

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() 多线程中唤醒所有等待线程的功能