1.2 Java语言基础

本文是课上资料的总结非原创没有转载地址

Java语言基础

1.变量

变量的概念

概念:计算机内存中的一块存储空间,是存储数据的基本单元。
组成:数据类型 变量名 值

定义流程

  • 声明
    数据类型 变量名;
int money;	//	开辟整数变量空间
  • 赋值
    变量名 = 值;
money = 100;	//	将整数值赋给变量

注意:Java是请类型语言,变量的类型必须与数据的类型一致。

定义方式

  • 先声明,后赋值
    数据类型 变量名;
    变量名 = 值;
  • 声明并赋值
    数据类型 变量名 = 值;
  • 多个同类型变量的声明与赋值
    数据类型 变量1, 变量2, 变量3 = 值3, 变量4, 变量5 = 值5;

2.数据类型

Java中的变量具有严格的数据类型区分。(强类型语言)
数据类型

基本数据类型(整数)

类型字节取值范围(二进制)取值范围(十进制)
byte1字节-2 ^ 7 ~ 2 ^ 7 - 1-128 ~ 127
short2字节-2 ^ 15 ~ 2 ^ 15 - 1-32768 ~ 32767
int4字节-2 ^ 31 ~ 2 ^ 31 - 1-2147483648 ~ 2147483647
long8字节-2 ^ 63 ~ 2 ^ 63 - 1-9223372036854775808 ~ 9223372036854775807

注意:int位整数的默认类型,如需为long类型赋值,需要在值的后面追加“L”

基本数据类型(小数/浮点数)

类型字节负数取值范围正数取值范围精度(从第一个非0数字开始算)
float4字节-3.4E+38 ~ -1.4E-451.4E-45 ~ 3.4E+387,8位(第8位不准确)
double8字节-1.7E+308 ~ -4.9E-3244.9E-324 ~ 1.7E+30815,16位(第16位不准确)

浮点型数值采用科学计数法表示:

注意:double为浮点数的默认类型,如需为float类型赋值,需要在值的后面追加“F”
double存的值是近似值

基本数据类型(布尔)

类型字节取值范围描述
boolean1字节true/false仅可描述“真”或者“假”
  • 可以直接赋值true / false
  • 也可赋值一个结果为true / false的表达式

注意:Java中的boolean不能参与算数运算

基本数据类型(字符)

类型字节取值范围(无符号数)字符编码
char2字节0~65535Unicode字符集(万国码)
  • Unicode字符集支持ASCII编码(美国标准信息交换码)。
  • Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值。
    • 字符赋值:char c1 = 'A';(通过’'描述为字符赋值)
    • 整数赋值:char c2 = 65;(通过十进制数65在字符集中对应的字符赋值)
    • 进制赋值:char c3 = '\u0041';(通过十六进制数41在字符集中所对应的字符赋值)
ASCII码表

ASCII码表

转义字符

如何给char赋特殊字符,如单引号’、双引号”
转义字符
为解决这一问题,Java采用了转义字符来表示单引号和一些特殊符号,如下表。

转义字符描述
\ n换行符
\ r回车符(回到行的开始位置)
\ t缩进(制表位)
\ \反斜线
\ ’单引号
\ "双引号

引用数据类型(字符串)

类型取值范围字符编码
String任何“ ”之间的字面值Unicode字符序列

思考

赋值语句对/错
byte a = 128;× 超出取值范围
short b = 65;
short c = -32000;
float d = 12.34;× 浮点数默认为double类型,此时应加F或f
char e = ‘65’;× 字符只能有一个
char f = 65;√ 可直接赋值为整数
char g = b;× short可能为负数
boolean h = “true”;× true / false为Java保留字,直接使用
String i = " 123";√ 空格也是字符

3.运算符

运算符

算数运算符:

两个操作数进行计算

操作符描述
+加、求和
-减、求差
*乘、求积
/除、求商
%模、求余
算数运算符:
一元运算符(只有一个操作数)(重点难点)
操作符描述
++递增,变量值+1
- -递减,变量值-1

注意:当运算符在在操作数后面时(X++)一定要看成一个整体

赋值运算符:

等号右边赋值给等号左边

操作符描述
=直接赋值
+=求和后赋值
-=求差后赋值
*=求积后赋值
/=求商后赋值
%=求余后赋值
关系运算符:

两个操作数进行比较

操作符描述
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
逻辑运算符:

两个boolean类型的操作数或表达式进行逻辑比较

操作符语义描述
&&与(并且)两个操作数,同时为真,结果为加
|或(或者)两个操作数,有一个为真,结果为真
!非(取反)意为“不是”,真即是假,假即是真
三元运算符:

将判断后的结果赋值给变量

操作符语义描述
? :布尔表达式 ? 结果1 : 结果2当表达式结果为真,获得结果1
当表达式结果为假,获得结果2

表达式

  • 使用运算符链接的变量或字面值,并可以得到一个最终结果。
  • 例如:
    • i + 2;
    • int a = 3; a - 2;
    • int b = 10; int c = 20; b * c; c / b;
    • short d = 100; int e = 200; d > e; d <= e;

优先级

Java优先级

4.类型转换

自动类型转换

  • 两种类型相互兼容
  • 目标类型大于源类型
short s = 123;
int i = s;	//	自动转换成功,编译通过

强制类型转换

  • 两种类型相互兼容
  • 目标类型小于源类型
short s = 123;
byte b = (byte)s;	//	强换:(目标类型)值

强制类型转换规则

  • 整数长度足够,数据完整。
    例:int i = 100; byte b = (byte)i; //b=100
  • 整数长度不够,数据截断。
    例:int i = 10000; byte b = (byte)i; //b=16(符号位变化,可能变为负数)
  • 小数强转整数,数据截断。
    例:double d = 2.5; int i = (int)d; //i = 2(小数位舍掉)
  • 字符整数互转,数据完整。
    例:char c = 65; int i = c; //i=65
  • boolean的取值为 true / false,不可与其他类型转换。

5.类型提升

自动类型提升
  • 进行算数运算时
    • 两个操作数有一个为double,计算结果提升为double。
    • 如果操作数中没有double,有一个为float,计算结果提升为float。
    • 如果操作数中没有float,有一个为long,计算结果提升为long。
    • 如果操作数中没有long,有一个为int,计算结果提升为int。
    • 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
  • 特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

6.控制台输入

  • 程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
  • 导包语法:import 包名.类名; //将外部class文件功能引入到自身文件中。
  • 使用顺序:
    • 导入java.util.Scanner;。
    • 声明Scanner类型的变量。(创建实例对象–后面讲到)
    • 使用Scanner类中对应的函数(区分类型):
      1. .nextInt(); //获得整数
      2. .nextDouble(); //获得小数
      3. .next(); //获得字符串
      4. .next().charAt(0); //获得单个字符

注意:

  1. .charAt(0);严格意义上讲是String类中的方法,后续讲到。
  2. 如果输入不匹配的数据,则会产生java.util.InputMismatchException异常错误。

总结

  • 变量
    计算机内存中的一块存储空间,是存储数据的基本单元。
  • 数据类型
    基本数据类型(8种)、引用数据类型(String、数组、类–对象、接口、枚举、注解等)。
  • 运算符
    算数运算符、赋值运算符、关系运算符、逻辑运算符。。。
  • 类型转换
    自动类型转换、强制类型转换。
  • 类型提升
    数字间的常规类型提升,字符串的特殊类型提升。
  • 控制台录入(控制台输入)
    引入工具包、声明Scanner、调用对应函数接收控制台录入数据。

面试题

public class Demo {
	public static void main(String[] args) {
		double d1 = 1.4;
		double d2 = 0.5;
		double d3 = 0.9;
		double d4 = (d1-d2) / d3;
		System.out.println("d4" = d4);
		//	输出多少?解决方法后期会说(BigDecimal)
		//	d4 = 0.9999999999999999(最后一位不准确)

		double c1 = 0.0/0.0;
		System.out.println("c1" = c1);
		//	输出多少?
		//	c1 = NaN(不是一个数)

		double c2 = 1.0/0.0;
		System.out.println("c2" = c2);
		//	输出多少?Infinity——无穷
		// c2 = Infinity

		double c3 = - 1.0/0.0;
		System.out.println("c3" = c3);
		//	输出多少?
		// c3 = -Infinity
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值