1.2 Java语言基础_float d = 12.34; ’-程序员宅基地

技术标签: Java基础  

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

Java语言基础

1.变量

变量的概念

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

定义流程

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

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

定义方式

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

2.数据类型

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

基本数据类型(整数)

类型 字节 取值范围(二进制) 取值范围(十进制)
byte 1字节 -2 ^ 7 ~ 2 ^ 7 - 1 -128 ~ 127
short 2字节 -2 ^ 15 ~ 2 ^ 15 - 1 -32768 ~ 32767
int 4字节 -2 ^ 31 ~ 2 ^ 31 - 1 -2147483648 ~ 2147483647
long 8字节 -2 ^ 63 ~ 2 ^ 63 - 1 -9223372036854775808 ~ 9223372036854775807

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

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

类型 字节 负数取值范围 正数取值范围 精度(从第一个非0数字开始算)
float 4字节 -3.4E+38 ~ -1.4E-45 1.4E-45 ~ 3.4E+38 7,8位(第8位不准确)
double 8字节 -1.7E+308 ~ -4.9E-324 4.9E-324 ~ 1.7E+308 15,16位(第16位不准确)

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

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

基本数据类型(布尔)

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

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

基本数据类型(字符)

类型 字节 取值范围(无符号数) 字符编码
char 2字节 0~65535 Unicode字符集(万国码)
  • 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
	}
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42646672/article/details/103410838

智能推荐

将本地镜像上传到Docker hub_本地docker镜像上传dockhub-程序员宅基地

文章浏览阅读2.4k次。一、准备工作1.注册账号注册一个Docker Hub账号,管理自己的镜像(共享镜像)https://hub.docker.com2.新建一个仓库Docker hub上面创建仓库,仓库用于存放镜像,就像我们在Github Create Create Repository比如:仓库名称叫navigation-server,所以路径就是liyinchi/navigation-server了。注意:仓库名称只能小写3.查看容器IDdocker ps上传到Doc._本地docker镜像上传dockhub

elementUI动态切换校验规则且切换校验规则时清空上一次校验产生的警告文字_ele 切换后清除校验-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏8次。**this.$refs.transformerForm.clearValidate(['transformerLVSRateCapacity'])**清除切换校验时上一次校验留下的警告文字,<el-form :model="transfomerInfo" :rules="rules" ref="transformerForm" label-width="170px"> <el-form-item label="低压侧容量(MVA):" prop="transformer..._ele 切换后清除校验

vulhub靶场struts2漏洞复现_vulhub靶场有哪些漏洞-程序员宅基地

文章浏览阅读2k次。0x01、S2-001远程代码执行漏洞原理该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行影响版本Struts 2.0.0 - Struts 2.0.8poc执行任意命令%{#a=(new java.lan_vulhub靶场有哪些漏洞

linux之找出两个文件里面相同的数据_limux中a-b相同内容-程序员宅基地

文章浏览阅读1.7w次,点赞5次,收藏33次。1 问题找出2个文件里面重复的数据(这个问题是csdn排名第一的大神stpeace的专栏在微信里面和我的交流,我当时一脸懵逼)文件a.txt文件内容如下cat a.txt123123234345456文件b.txt文件内容如下cat b.txt234345456789789两个文件重复的数据如下234345456..._limux中a-b相同内容

matlab绘制不同线性的直方图,Matlab绘制柱状图采用不同图案填充-程序员宅基地

文章浏览阅读545次。说明:在调用applyhatch前,按照自己的需要对Matlab自动绘制的图片编辑。function applyhatch(h,patterns,colorlist)%APPLYHATCH Apply hatched patterns to a figure% APPLYHATCH(H,PATTERNS) creates a new figure from the figure Hby% repl..._matlab不等间隔直方图

centos mysql navicat_centos7 安装 navicat for mysql-阿里云开发者社区-程序员宅基地

文章浏览阅读373次。本人使用的版本是navicat_for_mysql_10.0.11_cn_linux,使用官网上下的11版本的无法打开注意解压目录不要放在中文目录下,会出现各种问题,本人就出现打开之后添加列名添加不上。(1).先安装wine环境yum install wine如果yum源中没有,可以使用下面这个源wgethttp://download.fedoraproject.org/pub/epel/6/i..._centos7安装navicate for mysql

随便推点

使用Laravel值得关注的扩展包_laracasts/testdummy-程序员宅基地

文章浏览阅读1w次。下面会介绍一些laravel中一些好用的扩展包,当然,其中有的也是php的扩展包,合理的使用能够大大的提示开发效率。_laracasts/testdummy

列表类型python_Python列表类型-程序员宅基地

文章浏览阅读234次。列表的开始和结束要加上中括号 采用逗号将列表的项与项分开 使用“=”号操作符将整个列表赋予一个变量列表中可以放置任意的数据类型,如果是字符串,需要打上引号2.列表索引:从0开始;可以倒着来数,最后一个的序号是-1。取列表中的值:print aList[1]、print aList[-2]、print aList[-1][0]片段切片:[a:b],表示从a开始(包括a)到b之..._python列表类型怎么写

oracle临时表教程,在oracle存储过程中创建临时表-程序员宅基地

文章浏览阅读2.2k次。在oracle的存储过程中,不能直接使用DDL语句,比如create、alter、drop、truncate等。那如果我们想在存储过程中建立一张临时表就只能使用动态sql语句了:create or replace procedure pro asstr_sql varchar2(100);begin-- 创建临时表str_sql := 'create global temporary table ..._oracle 存储过程 临时表

centos 7 ffmpeg 批量 转码 mp4 kvm ts shell 懒人系列 -7_kvmts-程序员宅基地

文章浏览阅读476次。特别注意:本人很懒就搞了些懒人办法1.建立个文本。shell.sh,复制下面代码保存。打开终端(建议直接root用戶运行)。2.sudo chmod +x sheell.sh3.sudo ./shell.sh 文件名.avi (扩展名可以任意) 使用方法4.这段代码 支持H264 h265 支持60针视频5.shell.sh 文件要和视频文件同一目录6.转换完的文件被保存在finish文件夹中#!/bin/bash##i-合并视频##-change(转换)##i用法i(_kvmts

SpringBoot整合Redis与Cache实现分页缓存-程序员宅基地

文章浏览阅读4.2k次。SpringBoot整合Redis与Cache实现分页缓存_分页缓存

【FAQ】tomcat启动jdk版本不一致-程序员宅基地

文章浏览阅读192次。一、tomcat7.exe与startup.bat的区别:1、这两个都可以启动tomcat,但tomcat7.exe必须安装了服务才能启动,而startup.bat不需要2、另外一个区别是它们启动所使用的JAVA环境配置是分开的tomcat7.exe启动所使用JAVA配置与服务启动所使用的JAVA配置一样,都是通过tomcat7w.exe的JAVA面板配置(可以在创建服务前修..._龙蜥操作系统tomcat启动的java和java版本不一样

推荐文章

热门文章

相关标签