JavaSE基础知识(2)—变量和运算符
一、变量
1、理解
概念:内存中的一块数据存储空间
2、变量的三要素
数据类型
变量名
变量值
3、变量的语法和使用步骤★
步骤1:声明变量(计算机开辟一块空间)
数据类型 变量名;
步骤2:为变量赋值(初始化)
变量名 = 值;
步骤3:使用变量(打印、运算、比较等)
System.out.println(变量名);
注意:
①前两步可以合二为一:数据类型 变量名 = 值;
②可以同时声明多个变量,但要求变量的类型一致
语法:数据类型 变量名,变量名,变量名;
示例:int a=1,b,c=1;
4、变量的使用特点
①同一个作用域,变量不可以重名
作用域:变量的作用范围(根据变量的定义位置来确定变量的作用域)
public static void main(String[] args){
int a;
String a;
}
②变量必须先声明、赋值最后再使用
③变量的值可以更新,但必须在同一个类型范围内
④变量具备内存的“易失性”的特点
5、标识符
1、理解
凡是可以自己起名的地方,都称为标识符。如变量,方法,类,包,接口等
2、标识符的命名规则
1)由26个英文字母大小写,0-9 ,_或 $ 组成,数字不可以开头
2)不可以使用关键字和保留字,但能包含关键字和保留字
3)Java中严格区分大小写,长度无限制
4)标识符不能包含空格
3、标识符的命名规范
遵循“见名知义”原则
1)包名:多单词组成时所有字母都小写:xxxyyyzzz
2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
二、数据类型
1、常见的数据类型
int:用于保存整型的
double:用于保存浮点型的
char:用于保存单个字符,要求字符值必须用单引号引起来
String:用于保存字符串,要求字符串值必须用双引号引起来
2、数据类型的分类 ★
3、基本数据类型详细介绍
(1)整型
名称 | 所占字节空间 | 数值范围 | |
byte | 字节整型 | 1个字节 | -27~27-1 |
short | 短整型 | 2个字节 | -215~215-1 |
int | 整型 | 4个字节 | -231~231-1 |
long | 长整型 | 8个字节 | -263~263-1 |
特点:
1、编译器默认的整型为int
2、long类型的标记为l或L
3、每个整型保存的数值不能超过所表示的范围,否则 会报错误!
(2)浮点型
名称 | 所占字节空间 | |
float | 单精度浮点型 | 4个字节 |
double | 双精度浮点型 | 8个字节 |
特点:
1、浮点型的存储和整型的存储不一样
浮点型真实的存储,和真正的数值之间有一些差距,所以叫“浮点型”
2、如果想表示更高精度的浮点数,可以使用BigDecimal
如果想显示指定位数的浮点数,可以使用格式的方法
double a = 12.3;
System.out.printf("%.2f",a/3);
3、编译器默认的浮点型为double类型
4、float类型的常量值最好加上 f或F标记
float f = 3.6;//错误
float f = 3.6f;
(3)字符型
名称 | 所占字节空间 | 使用的字符编码 | |
char | 字符型 | 2个字节 | Unicode |
特点:
1.char类型的常量值形式:
char c = '';//× char c = ' ';//√ char c = 'c'; char c = '\u00f2'; char c = 100;
2.char类型的变量在进行运算或比较时,类型自动提升成int类型处理
案例1:
char c = 'd';
System.out.println(c+2);//102
案例2:
char c = '2';
char d = 2;
System.out.println(c==2);//false
System.out.println(d==2);//true
3.每个char类型的变量存储时,都需要先去对应的码表找到对应的码值,然后存储
☆char——>码值——>存储(char类型的底层实际上就是以整型存储的!)
每个char类型的变量读取时,都需要先将码值根据码值找到对应的字符,然后访问
☆码值——>char——>读取
(4)布尔型
名称 | 所占字节空间 | 表示的值 | |
boolean | 布尔 | 1个字节 | true|false |
特点:
1、用于保存关系的结果,像关系表达式、逻辑表达式的结果就可以使用布尔型存储
2、一般当做条件,用在if结构或循环结构中
4、数据类型之间的转换
(1)基本数据类型之间的转换
除:boolean
1、自动类型转换
规则:小——>大
语法:double d = 1;
2、强转类型转换
规则:大——>小
语法:int i = (int)1.5;
特点:
①自动提升的原则。表达式的最终结果的类型为 操作数中最大的类型!
②强转符号只针对于最近的操作数有效,一般使用小括号提升优先级
(2)String类型和基本类型之间的转换
1、基本类型——>String类型
规则:直接拼接空字符串即可
语法:
char c = '中';
String s = c+"";
2、String类型——>基本类型
规则:除char之外,其他的都是通过 包装类型.parseXX的方法
语法:除char之外:
String s = "12345";
int i = Integer.parseInt(s);
char:
String s = "asfgh";
char c = s.charAt(1);//提取单个字符
char[] ch = s.toCharArray();//将整个字符串转换成字符数组
三、运算符
1、常见运算符
算术运算符
关系运算符
逻辑运算符
赋值运算符
三目运算符
2、运算符详细介绍
(1)算术运算符
1、基本算术运算符
+ - * / %
注意:/左右两边都是整型,结果取整
2、自增、自减运算符
++ --
特点:
①属于一元运算符:i++、--i
②可以作为独立的语句或作为表达式使用
作为独立的语句使用:i++;等价于++i;效果上等价于 i=i+1;
作为表达式使用:int j = i++; 先赋值后自增,等价于 int temp = i++; i++; j = temp;
int j = ++i; 先自增后赋值
③自增、自减运算符,底层做了优化,所以效率较高,其次不用手动的类型转换
int i = 10;
i*=1.523;//√
System.out.println(i);//15
(2)关系运算符
> < >= <= == !=
(3)逻辑运算符
名称 | 语法 | 特点 | |
&& / & | 与 | 条件1&& 条件2 | 两个条件都成立,结果为true |
|| / | | 或 | 条件1|| 条件2 | 只要有一个条件成立,结果为true |
! | 非 | !条件 | 如果条件成立,结果为false,否则为true |
&&和&的区别:
&& 如果第一个条件不成立,则不再执行第二个条件,效率较高
& 不管第一个条件是否成立,都要执行第二个条件,效率较低
||和|的区别:
|| 如果第一个条件成立,则不再执行第二个条件,效率较高
| 不管第一个条件是否成立,都要执行第二个条件,效率较低
(4)赋值运算符
1、基本赋值运算符 =
2、复合赋值运算符 += 、-= 、*=
特点:
1、运算顺序从右往左
2、赋值运算符的左边只能是变量,右边可以是变量、常量、表达式、方法调用
3、复合赋值运算符具备以下特点
①i+=3;效果上等价于 i=i+3;但效率比i=i+3;较高
②编译器内部做了优化,不用我们手动的类型转换了
③复合赋值的变量必须提前进行初始化
(5)三目运算符
条件?操作数1 :操作数2
特点:
1、如果条件成立,结果为操作数1,否则为操作数2!
2、两个操作数的类型要求一致或兼容
3、运算符优先级
()——>!——>++ -->算术运算符——>关系运算符——>逻辑运算符——>三目运算符——>赋值运算符
四、进制与位运算符
1、进制
(1)进制介绍
十进制:0-9 ,满10进1
二进制:0—1,满2进1,以0b或0B开头
八进制:0-7,满8进1,以0开头
十六进制:0-9 A-F,满15进1,以0x或0X开头
(2)进制转换
1、其他进制转换成十进制
规律:从最低位开始,依次将每个位上的数提取出来,乘以2|8|16的幂(幂从0开始),最后累加即可
2、十进制转换成其他进制
规律:不断除以2|8|16,将余数倒过来即可
3、二进制转换成八进制或十六进制
规律:从最低位开始每3位或每4位 ,转换成一位八进制或十六进制数即可,位数不够,前面用0补齐
4、八进制或十六进制转换成二进制
规律:将每个位上的数,拆分成3位或4位二进制,位数不够,前面用0补齐
2、位运算符
(1)常识
1、计算机底层的 都是以二进制的补码形式进行存储和运算的
2、相关概念
正数:三码合一
负数:
原码:将负数进行 进制转换的结果,其中最高位代表符号位
反码:最高位不变,其他位按位取反
补码:反码基础上+1
(2)常见的位运算符
1、<< 左移 :a<< b.将a左移指定的b位数,空缺位补0
2、>> 右移 :a>> b.将a右移指定的b位数,空缺位补符号位
3、>>> 无符号右移:a>>> b.将a右移指定的b位数,空缺位补0
4、& 与:a&b 按位取与,两个都是1,结果为1,否则为0
5、| 或:a|b 按位取或,两个都是0,结果为0,否则为1
6、^异或:a^b 按位异或,两个相同为0,不同为1
7、~取反:~a 按位取反,如果为1,则结果为0,否则结果为1
注意:
都是以补码形式
最高位参与运算!
JavaSE基础知识(2)—变量和运算符的更多相关文章
- java第二章 变量和运算符
Java 基础应用编程—— 变量和运算符 1.Java程序结构 数据类型:确定要存储在内存中的数据的类型. 变量:是存储数据的基本单元 2.变量的概念 变 ...
- javaSE练习1——变量和运算符
一.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用): package com.test; public class t01 { public stati ...
- Shell编程基础教程2--变量和运算符
2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...
- Java2变量和运算符
课后作业:[必做题] 1√AB互换 已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用) [必做题] package com.two; public clas ...
- JavaSE基础知识总结
最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...
- Java入门(三):变量和运算符
上次谈到了Java的基本数据类型,今天接着聊Java的变量.运算符. 一.变量 1.变量的分类 变量分为成员变量.局部变量和常量,其中成员变量又分为实例变量.类变量. 2.变量的定义 语法:变量类型( ...
- 一:1.2【print&input与变量和运算符】
[路径] 绝对路径:从根目录开始链接的路径 --->cd C:\Windows\Boot\DVD\EFI\en-US 相对路径:不从根目录开始链接的路径 ----> cd Boot\DV ...
- shell脚本基础知识以及变量
一.基础知识 1.shell脚本的格式注意事项 第一行(一般必须写明):指定脚本使用的shell(若不写明也不影响脚本的执行,系统会自动以sh解析脚本)."#!/bin/bash" ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
随机推荐
- dubbo 基础入门
一.什么是dubbo? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,说白了就是个远程服务调用的分布式框架. dubbo产生的背景 ① 单一 ...
- 4、Linux常用命令
1.查看端口占用(8080) lsof -i:8080 2.杀死进程PID kill -9 41726 3.查看防火墙状态 firewall-cmd --state 4.停止防火墙 systemctl ...
- docker的ubuntu镜像无ifconfig和ping netstat命令
docker的ubuntu镜像无ifconfig和ping命令 或者 ubuntu系统中无ifconfig 和 ping 解决方案: 执行以下鸣冷: apt-get update apt-get in ...
- php利用array_search与array_column实现二维数组查找
利用array_search与array_column实现二维数组查找,不用自己写个循环,减少工作量. <?php $userdb = array( 0 => array( 'uid' = ...
- ActiveMQ-5.15.2下载和启动(windows)
一.下载和部署 我的ActiveMQ版本是 5.15.2,参照别人家的博客,下载和启动照样成功.别人家的博客地址: http://blog.csdn.net/clj198606061111/artic ...
- pytorch下的lib库 源码阅读笔记(2)
2017年11月22日00:25:54 对lib下面的TH的大致结构基本上理解了,我阅读pytorch底层代码的目的是为了知道 python层面那个_C模块是个什么东西,底层完全黑箱的话对于理解pyt ...
- CentOS7.5 安装ssh
yum -y install openssh-clients 如果出现 Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open. 等错误显示了,原来 ...
- ssh免密钥之上厕所
ssh服务简单介绍 SSH协议框架中最主要的部分是三个协议: *传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性等的支持; *用户认证协议( ...
- Container 、Injection
Container: Linux容器作为一类操作系统层面的虚拟化技术成果,旨在立足于单一Linux主机交付多套隔离性Linux环境.与虚拟机不同,容器系统并不需要运行特定的访客操作系统.相反,容器共享 ...
- Java笔记Spring(三)
spring-beans和spring-context 一.注解 1.自定义一个注解 @Target({ElementType.METHOD}) @Retention(RetentionPolicy. ...