【Java】韩顺平Java学习日志01——变量

本文详细介绍了Java中的变量概念,包括变量的声明、赋值和使用注意事项。同时,讲解了数据类型,如基本数据类型(数值型、浮点型、字符型、布尔型)和引用数据类型,以及数据类型之间的自动和强制转换。特别提到了字符编码和JavaAPI文档的重要性。文章最后讨论了字符串与基本数据类型的转换,并提供了练习题帮助巩固知识。
摘要由CSDN通过智能技术生成

变量

变量介绍

变量是程序的基本组成单位
变量的三个基本要素:类型+名称+值
在这里插入图片描述

变量的基本原理

程序指令和内存的对应关系
在这里插入图片描述

变量的概念

变量相当于是内存中一个数据存储空间的表示,可以把变量视为一个房间的门牌号,通过门牌号可以找到房间,通过变量名可以访问变量值

变量使用步骤

声明变量:int a;
赋值:a=60;
使用System.out.println(a);

声明变量的同时也可以赋值

变量使用注意事项

1.变量表示内存中的一个存储区域,不同的变量,类型不同,占用空间的大小不同
2.该存储区域有自己的名称和类型
3.变量必须先声明,后使用
4.该存储区域的数据可以在同一类型范围内不断变化
5.变量在同一作用域内不能重名
6.变量=变量名+值+数据类型

+号的使用

当左右两边都是数值,则做假发运算
当左右两边有一方为字符串,则做拼接运算
运算顺序从左到右
在这里插入图片描述

数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间

基本数据类型

数值型:整数类型

存放整数

byte[1]
short[2]
int[4]
long[8]

在这里插入图片描述

Java各整数类型有固定的范围和字段长度,不受具体OS(操作系统)的影响,以保证Java程序的可移植性
Java的整型常量(具体值)默认为int类型,声明long型常量需后加‘l’或’L‘
Java中常量沿声明为int,除非不足以表示大数,才使用long(尽量使用小的类型)
bit是计算机的最小存储单位,byte是计算机中的基本存储单元,1个byte=8个bit

数值型:浮点(小数)类型
float[4]
double[8]

在这里插入图片描述
说明:
关于浮点数在机器中存储的形式的简单说明,浮点数=符号位+指数位+尾数位
尾数部分可能丢失,造成精度损失(小数都是近似值)

Java的浮点数型常量默认为double类型,声明float类型后面加‘f’或’F‘
在这里插入图片描述
浮点型常量通常由两种表示方法:
在这里插入图片描述
通常情况下应该使用double型,因为double型比float型精度更高
在这里插入图片描述
浮点数使用陷阱:
在这里插入图片描述
在这里插入图片描述
计算机会把小数进行近似处理,故输出存在差异

尽量不要对运算结果是小数的进行相等判断,如果要比较是以两个数的差值的绝对值,在某个精度范围内判断

if(Math.abs(num11-num12)<0.0000001)
{
	System.out.println("equal");
}

差值小于规定范围则视为相等
(ctrl+/多行注释的快捷键,再次输入则取消注释)
如果是直接赋值或这点直接查询得到的小数则是可以判断相等

字符型

存放单个字符,字符类型为char

char[2]
char c1='a';
char c2='\t';
char c3='汉'
char c4=97;//字符类型可以直接存放数字,输出为数字表示的字符

char是两个字节(可以存放汉字)
多个字符用字符串String
(快捷键冲突:修改快捷键:首选项-按键绑定默认-查找复制-按键绑定用户粘贴,修改-保存)

字符常量是用单引号(’ ‘)括起来的单个字符(双引号为字符串)
Java中还允许使用转义字符’ \ '来将其后的字符转变为特殊字符型常量
Java中char的本质是一个整数,输出时是Unicode码对应的字符,要输出对应的数字,前面加(int)
可以直接给char赋值一个整数,然后输出时,会按照对应的Unicode字符输出

char c1=97;
System.out.println(c1);//a
char c2='a';
System.out.println((int)c2);//a对应的数字->97
char c3='韩';
System.out.println((int)c3);//对应的数字->38889
char c4=38889;
System.out.println(c2);//韩

char类型是可以进行运算的,相当于一个整数,因为它有对应的Unicode码

char c5='b'+1;
System.out.println((int)c5);//99
System.out.println(c5);//99->对应的字符即ASCII码->b;

字符型存储到计算机中需要将字符对应的码值(整数)找出来进行存储
存储:‘a’->码值97->二进制->存储
读取:二进制->97->‘a’->显示

布尔型

boolean存放true,flase,无null
boolean占一个字节,适用于逻辑运算,一般用于流程控制
不可以用0或非0的整数代替true和false

boolean[1]

引用数据类型

类class,接口interface,数组[]

编码

字符和码值的对应关系是由字符的编码表规定好的

ASCII编码表,每一个字符是用一个字节表示的,一共由128个字符,实际上一个字节可以表示256个字符,只用了128个
Unicode编码表,固定大小的编码,使用两个字节来表示字符,字母和汉字统一都是占用两个字节(浪费空间),每一个符号都给予一个独一无二的编码,不存在乱码问题
utf-8编码是互联网上使用最广的一种Unicode的实现形式,大小可变的编码(1-6个字节,根据不同符号变化的字节长度),字母使用一个字节,汉字使用3个字节
gbk可以表示汉字,而且范围广,字母使用一个字节,汉字使用2个字节
gb2312可以表示汉字,gb2312开发中<gbk
big5 码:繁体中文,台湾,香港

Unicode码兼容ASCII码

数据类型的转换

自动类型转换

当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型
在这里插入图片描述

int a='c';//char->int 97
double d=80;//int->double 80.0
注意

1.在多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
2.当我们把精度大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换
3.(byte,short)和char之间不会相互自动转换
4.byte,short,char三者可以计算,在计算时首先转换成int类型(不论是单独相同类型,还是之间不同类型都是会转换成int)
5.boolean不参与转换
6.自动提升原则:表达式结果的类型自动提升为操作数中最大的类型

int n1=10;//OK
float d1=n1+1.1;//错误,运算结果类型为double
double d1=n1+1.1;//OK 1.1默认double类型
float d1=n1+1.1F;//OK -128-127 

byte b1=10;//OK,当值赋给byte时先判断该数是否在byte范围内,如果是就可以
int n2=1;
byte b2=n2;//no 如果是按照变量赋值,则判断类型,int不可兼容于byte

char c1=b1;//no byte不能自动转换成char

byte b2=1;
byte b3=2;
short s1=1;
short s2=b2+s1;//no 此时s2应该为int类型 
int s2==b2+s1;//OK

byte b4=b2+b3;//no 此时b4应该为int类型

boolean pass=true;
int num100=pass;//no boolean不参与自动类型转换

byte b4=1;
short s3=100;
int num200=1;
double num300=1.1;
double num500=b4+s3+num200+num300;//OK

float num300=1.1F;
int num500=b4+s3+num200+num300;//no 不能把float转成int
float num500=b4+s3+num200+num300;//OK double也可以

强制类型转换

自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或溢出

int i=(int)1.9;//存在精度损失 1
byte b1=(byte)2000;//造成数据溢出

基本数据类型和String类型的转换

基本类型转成字符串

将基本类型的值+“”

int n1=100;
String s1=n1+"";//OK
String类型转成基本数据类型

通过基本类型的包装类巧用相应的parseXX方法即可得到基本数据类型
含义是把字符串的第一个字符得到

String s5="123"
int num1=Integer.parseInt(s5);//123
double num2=Double.parseDouble(s5);//123.0
boolean b=Boolean.parseBoolean("true");//true
注意

在String类型转换成基本数据类型时,要确保String类型能够转成有效的数据(比如字符串“hello”)
如果格式不正确,就会爆出异常,程序就会终止

Java API文档

API是Java提供的基本编程接口(Java提供的类还有相关的方法)
Java语言提供了大量的基础类,Oracle公司为这些基础文档提供了相应的文档,告诉开发者如何使用这些类以及这些类中包含的方法

Java类的组织形式
在这里插入图片描述

注意

1.进行数据从大到小的转换
2.强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
3.char类型可以保存int的常量值,但是不能保存int的变量值,需要强转
4.byte和short,char类型在进行运算时,当作int类型处理

int x=(int)10*3.5+6*1.5;//编译错误 double赋值给int报错
int x=(int)(10*3.5+6*1.5);//44 先计算再强转

char c1=100;//OK
int m=100;//OK
char c2=m;//no
char c3=(char)m;//OK 输出100对应的字符

练习

String book1="book1";
String book2="book2";
System.out.println(book1+book2);//book1book2

char c1='男';
char c2='女'
System.out.println(c1+c2);//输出男字符码值+女字符码值

double d1=123.3;
double d2=123.2;
System.out.println(d1+d2);//246.5

System.out.println("姓名\t年龄\t成绩\t性别\t爱好\n"+name+"\t"+age+"\t"+score+"\t"+gender+"\t"+hobby);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值