变量

变量介绍

为什么需要变量

  • 变量是程序的基本组成单位

不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如:

//变量有三个基本要素(类型+名称+值)

class Test{
public static void main(String []args){
int a=1;//定义了一个变量,类型int整型,名称a,值1
int b=3;//定义了一个变量,类型int整型,名称b,值3
b=89;//把89值赋给b变量
System.out.println(a);//输出a变量的值
System.out.println(b);//输出b变量的值
}
}

变(变化)量(值)的介绍

概念

变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。

●变量使用的基本步骤

  1. 声明变量

    int a;
  2. 赋值

    a = 60;//应该这么说:把60赋给a
  3. 使用 System.out.println(a);

//也可以一步到位[int a = 60;通常我们是一步完成]

变量快速入门

变量使用入门案例

看演示并对代码进行说明,演示记录人的信息的代码

public class Var02{
//编写一个main方法
public static void main(string[] args) {
//记录人的信息
int age = 30;
double score = 88.9;
char gender =‘男';
string name = "king";//输出信息,快捷键
System.out. println(”人的信息如下:");
System.out.println(name);
System.out.println(age);
System.out.println(score);
System.out.println(gender);
}
}

变量使用注意事项

  1. 变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,比如:int 4个字节,double就是8个字节]
  2. 该区域有自己的名称[变量名]和类型[数据类型]
  3. 变量必须先声明,后使用,即有顺序
  4. 该区域的数据可以在同一类型范围内不断变化
  5. 变量在同一个作用域内不能重名
  6. 变量=变量名+值+数据类型,这一点请注意。变量三要素

+号的使用

  1. 当左右两边都是数值型时,则做加法运算

  2. 当左右两边有一方为字符串,则做拼接运算

  3. 运算顺序从左到右

  4. 测试题1min

    下面代码输出什么?

    System.out.println(100 + 98);

    System.out.println("100" + 98);

    System.out.println(100+3 +"hello");

    System.out.println("hello" +100 +3);

    答案

    198

    10098

    103hello

    hello1003

数据类型

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

(boolean 值只有 true 和 false 两种,这个数据类型只代表 1 bit 的信息,但是它的“大小”没有严格的定义。也就是说,不管它占多大的空间,只有一个bit的信息是有意义的。)(在 Oracle 的 Java 虚拟机实现中,Java 语言中的 boolean 数组被编码成 Java 虚拟机的 byte 数组,每个元素占 8 比特。参考:https://binkery.com/archives/346.html)

整数类型

整型的类型

类型 占用存储空间 范围
byte[字节] 1字节 -128 ~127
为啥存放的范围是这个=>二进制(二进制我们详解)
short[短整型] 2字节 -(215)~215-1
-32768~32767
int[整型] 4字 -231 ~ 231-1
-2147483648 - 2147483647
long[长整型] 8字节 -263 ~ 263-1

整型的使用细节

  1. Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性。

  2. Java的整型常量(具体值)默认为int型,声明long型常量须后加‘l’或'L'

  3. java程序中变量常声明为int型,除非不足以表示大数,才使用long

  4. bit:计算机中的最小存储单位。 byte:计算机中基本存储单元, 1byte = 8 bit

    [二进制再详细说,简单举例一个byte 3和short 3]

思考题:long类型,有几个 bit

[8*8=64 bit]

long n = 3;//内存中

浮点类型

  • 基本介绍

    Java的浮点类型可以表示一个小数,比如123.4,7.8,0.12等等

浮点型的分类

类型 占用存储空间 范围
单精度float 4字节 -3.403E38~3.403E38
双精度double 8字节 -1.798E308 ~ 1.798E308
  • 说明一下

    1.关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位

    2.尾数部分可能丢失,造成精度损失(小数都是近似值)。

浮点型使用细节

  1. 与整数类型类似,Java浮点类型也有固定的范围和字段长麾,不受具体OS的影响。[float 4个字节 double是8个字节]

  2. Java的浮点型常量默认为double型,声明float型常量,须后加f或‘F’

  3. 浮点型常量有两种表示形式

    十进制数形式:如:5.12 512.0f .512(必须有小数点)

    科学计数法形式:如:5.12e2[5.12*102] 5.12E-2 [5.12*10-2]

  4. 通常情况下,应该使用double型,因为它比float型更精确。[举例说明]

    double num9 =2.1234567851;

    float num10 = 2.1234567851F;

  5. 浮点数使用陷阱:2.7和8.1/3比较(浮点数做除法结果为近似值)(实际开发中当它们的差值的绝对值很小时视为相等)

    if(Math.abs(num1 - num2)<0.000001){
    System.out.println("差值非常小,到我的规定精度,认为相等...");
    }

Java API文档

  1. API (Application Programming Interface,应用程序编程接口)是Java提供的基本编程接口(java提供的类还有相关的方法)。中文在线文档:https://www.matools.com

  2. Java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。

  3. Java类的组织形式 [图]

  4. 举例说明如何使用

    按:包->类->方法

    直接搜索。(Math)

字符类型(char)

基本介绍

字符类型可以表示单个字符,字符类型是char, char是两个字节(可以存放汉字),多个字符我们用字符串String(我们后面详细讲解String)

案例演示

//演示char的基本使用
public class Chare1 {
//编写一个main方法
public static void main(String[] args){
char c1 = 'a';
char c2 = '\t';
char c3 = '韩';
char c4 = 97;//说明:字符类型可以直接存放一个数字
System.out.println(c1);//a
System.out.println(c2);//
System.out.println(c3);//韩
System.out.println(c4);//a
}
}

代码

char c1 = 'a';

char c2 ='\t';

char c3='韩';

char c4 =97:

字符类型使用细节

  1. 字符常量是用单引号( ‘ ’ )括起来的单个字符。例如:char c1 = 'a'; char c2 ='中‘; char c3 ='9';(不能使用双引号,会报错)

  2. Java中还允许使用转义字符'\'来将其后的字符转变为特殊字符型常量。例如:char c3 = n'; 'n'表示换行符

  3. 在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。

    http://tool.chinaz.com/Tools/Unicode.aspx

  4. 可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出[97]

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

public class CharDetail{
//编写一个main方法
public static void main(String[] args) {
//在java中,char的本质是一个整数,在输出时,是unicode码对应的字符char c1 = 97;
System.out.println(c1); // a
char c2 = 'a';//输出'a’对应的数字
System.out.println((int)c2);//92
char c4 = 38889;
System.out.println(c4);//韩
//char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode
System.out.println('a' + 10);//97+10=107 //课堂小测试
char c5 = 'b’ + 1;//98+1==> 99
System.out.println((int)c5);//99
System.out.println(c5);//99->对应的字符->编码表
}
}

字符类型本质探讨

  1. 字符型存储到计算机中,需要将字符对应的码值(整数)找出来,比如'a'

    存储:'a'==> 码值97 ==> 二进制 > 存储

    读取:二进制> 97 ==> 'a'=>显示
  2. 字符和码值的对应关系是通过字符编码表决定的(是规定好)

介绍一下字符编码表

ASCIl(ASCII编码表一个字节表示,一个128个字符)(http://c.biancheng.net/c/ascii/)

Unicode (Unicode编码表固定大小的编码使用两个字节来表示字符,字母和汉字统一都是占用两个字节,这样浪费空间)

utf-8(编码表,大小可变的编码。其中字母使用1个字节,汉字使用3个字节)

gbk(可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节)

gb2312(可以表示汉字,gb2312<gbk)

big5码(繁体中文,台湾,香港)

布尔类型:boolean

基本介绍

  1. 布尔类型也叫boolean类型,booolean类型数据只允许取值true和false,无null

  2. boolean类型占1个字节。

  3. boolean类型适于逻辑运算,一般用于程序流程控制[这个后面会详细介绍]:

    if条件控制语句;

    while循环控制语句;

    do-while循环控制语句;

    for循环控制语句

案例演示

boolean pass = true;
if (pass){
System.out.print1n("通过考试");
}else{
System.out.print1n("没有通过考试~");
}

基本数据类型转换

自动类型转换

介绍

当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。

数据类型按精度(容量)大小排序为(背,规则)

graph LR
A(char) -->B(int)-->C(long)-->D(float)-->E(double)
F(byte)-->G(short)-->B

看一个基本案例

int a = 'c";
double d = 80;

自动类型转换注意和细节

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

强制类型转换

介绍

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

案例演示

int i = (int)1.9;
System.out.println(i);//造成精度损失 int j =100;
byte b1 = (byte)j;
System.out.print1n(b1);//数据溢出

强制类型转换细节说明

  1. 当进行数据的大小从大——>小,就需要使用到强制转换

  2. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

    //int x =(int)10*3.5+6*1.5;
    int y = (int)(10*3.5+6*1.5);
    System.out.println(y);
  3. char类型可以保存int的常量值,但不能保存int的变量值,需要强转

    char c1 = 100;//v
    int m = 100;//v
    char c2 = m;//x
    char c3= (char)m;//v
    System.out.println(c3);//100对应的字符
  4. byte和short类型在进行运算时,当做int类型处理。

基本数据类型转换-练习题

判断是否能够通过编译

//1
short s= 12;
s= s-9;
x
//2
byte b = 10;
b =b +11;
b =(byte)(b+11); //3
char c = 'a';
int i= 16;
float d = .314F;
double result =c+i+d; //4
byte b = 16;
short s=14;
short t =s + b; 答案:
----------------------------------------
1.错
2.错
3.对
4.错

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

介绍

在程序开发中,我们经常需要将基本数据类型转成String类型。或者将String类型转成基本数据类型。

  • 基本类型转String类型

    语法:将基本类型的值+""即可

int n1 = 100;
fLoat f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;
String s1 = n1 +"";
String s2 = f1 +"";
String s3 = d1 +";
String s4 = b1 +"":
System.out.print1n(s1 + " " + s2 + " " +s3 + "" + s4);
  • String类型转基本数据类型

    语法:通过基本类型的包装类调用parseXX方法即可

//String->对应的基本数据类型
String s5 = "123";
//会在0OP讲对象和方法的时候回详细
int num1 = Integer.parseInt(s5);
double num2 = Double.parseDouble(s5);
float num3 = Float.parseFloat(s5);
long num4 = Long.parseLong(s5);
byte num5 = Byte.parseByte(s5);
booLean b = BooLean.parseBoolean("true");
short num6 = Short.parseShort(s5); System.out.println(num1);//123
System.out.println(num2);//123.0
Sytem.out.println(num3);//123.0
System.out.println(num4);//123
System.out.println(num5);//123
System.out.println(num6);//123
System.out.println(b);//true //怎么把字符串转成字符char ->含义是指把字符串的第一个字符得到
//解读s5.charAt(0)得到s5字符串的第一个字符'1'
System.out.println(s5.charAt(0));

注意事项

  1. 在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如我们可以把"123",转成一个整数,但是不能把"hello"转成一个整数。
  2. 如果格式不正确,就会抛出异常,程序就会终止,这个问题在异常处理章节中,会处理

本章练习

  1. 程序阅读题,看看输出什么?

    public class Homework01 {
    public static void main(String]args){
    int n1;
    n1 = 13;
    int n2;
    n2 = 17;
    int n3;
    n3 = n1 +n2;
    System.out.println("n3 = " + n3);
    int n4 = 38;
    int n5 = n4 - n3;
    System.out.println("n5 = " + n5);
    }
    }
    /*
    n3 = 30
    n5 = 8
    */
  2. 使用char类型,分别保存\n \t \r \\ 1 2 3等字符,并打印输出

    public class Homework02 {
    //编写一个main方法
    public static void main(String[] args) {
    //使用char类型,分别保存\n \t \r\ \1 23等字符,并打印输出
    char c1 = '\n';//换行
    char c2 = '\t';//制表位ctrl +d
    char c3 = '\r ';//回车
    char c4 = '\r';//输出\
    char c5 = '1';//换行
    char c6 = '2 ';//换行
    char c7 = '3';//换行
    System.out.println(c1);
    System.out.println(c2);
    System.out.println(c3);
    System.out.println(c4);
    System.out.println(c5);
    System.out.println(c6);
    System.out.println(c7);
    }
    }
  3. 编程,保存两本书名,用+拼接,看效果。保存两个性别,用加号拼接,看效果。保存两本书价格,用加号拼接,看效果。

    public class HomeworkO3 {i
    //编写一个main方法
    public static void main(String[] args) {
    //编程,保存两本书名,用+拼接,看效果。保存两个性别,//用加号拼接,看效果。保存两本书价格,用加号拼接,看效果
    String book1 ="天龙八部";
    String book2 ="笑傲江湖";
    System.out.println(book1 + book2);//天龙八部笑傲江湖 //性别应该使用char保存
    char c1 =‘男';
    char c2 =‘女;
    System.out.println(c1 + c2);//得到男字符码值+女字符码值 //保存两本书价格
    double price1 = 123.56;
    double price2 = 100.11;
    System.out.println(price1 + price2);//就是123.56+100.11
    }
    }
  4. 编程实现如下效果:

    年龄 成绩 性别 爱好

    XX XX XXX XXX

    要求:

    1)用变量将姓名、年龄、成绩、性别、爱好存储

    2)使用+

    3)添加适当的注释

    4)添加转义字符,使用一条语句输出

    public class HomeworkO4 {i
    //编写一个main方法
    public static void main(String[] args) {
    String name = "jack";
    int age = 20;
    double score = 80.9;
    char gender ='男';
    String hobby ="打篮球";//输出了信息,可以使用换行
    System.out.println("姓名\t年龄\t成绩\t性别t爱好\n" + name + "\t"
    + age + “\t" + score + "\t" + gender + "\t" + hobby);
    }
    }

Java学习-第一部分-第一阶段-第二节:变量的更多相关文章

  1. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  2. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  3. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第二节:WebRequest

    本节主要来介绍一下,在C#中制造爬虫,最为常见.常用.实用的基础类 ------ WebRequest.WebResponse. 先来看一个示例 [1.2.1]: using System; usin ...

  4. Java 学习路线以及各阶段学习书籍,博文,视频的分享

    感谢: 感谢每一个打开这篇文章的人,听我在这里瞎扯!至于我为什么会有闲情写这篇文章呢?因为我每天想的是为什么要给我这样的需求,背后的人性是什么,我能再做些什么能让他更好.久而久之,我也稍微有了些自己的 ...

  5. #Java学习之路——基础阶段(第一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. #Java学习之路——基础阶段二(第一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  7. java 学习之路第一节

    一.安装mysql驱动:http://mvnrepository.com/search?q=mysql-conn 二.看数据库中有什么表安装:navicat for MySQL 文件类写数据库查询: ...

  8. Java学习IO流第一天

    今日内容介绍 字节流 字符流 1 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流Ou ...

  9. #Java学习之路——基础阶段二(第二篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

随机推荐

  1. 2020极客大挑战Web题

    前言 wp是以前写的,整理一下发上来. 不是很全. 2020 极客大挑战 WEB 1.sha1碰撞 题目 图片: 思路 题目说,换一种请求方式.于是换成post.得到一给含有代码的图片 图片: 分析该 ...

  2. DRF JWT认证(二)

    快速上手JWT签发token和认证,有这一篇就够了,DRF自带的和自定义的都帮你总结好了,拿去用~

  3. NodeJs学习日报day9——操作数据库

    const mysql = require('mysql') const db = mysql.createPool({ // 数据库的ip地址 host: 'localhost', user: 'r ...

  4. WEB安全信息收集

    目录 信息收集 子域名&敏感信息 敏感信息收集--Googlehack 敏感信息收集--收集方向 空间测绘引擎域名资产收集 子域名收集 WEB指纹 端口扫描 IP查询 cms识别 WAF识别 ...

  5. Spark SQL底层执行流程详解

    本文目录 一.Apache Spark 二.Spark SQL发展历程 三.Spark SQL底层执行原理 四.Catalyst 的两大优化 一.Apache Spark Apache Spark是用 ...

  6. ValidForm5.3.2 忽略表单项校验详解

    ValidForm 官方文档 项目的需求是这样的:一个checkbox,一个input,选中checkbox的时候,需要校验input,取消选中的时候,不要校验input. <input typ ...

  7. FreeRTOS --(9)任务管理之启动调度器

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107057528 在使用 FreeRTOS 的时候,一般的,先创建若干任务,但此刻任务并 ...

  8. 项目实战:rsync+sersync实现数据实时同步

    一.组网介绍 本次实验使用两台主机: qll251 角色:Rsync server + Sersync server qll252 角色: Rsync client 本次实验采用CentOS7.7系统 ...

  9. 干货 | Nginx 配置文件详解

    一个执着于技术的公众号 前言 在前面章节中,我们介绍了nginx是什么.如何编译安装nginx及如何彻底卸载nginx软件. 干货|给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 ...

  10. APP应用前端开发

    1.开发手机APP前端要重视meta标签的编写: 2.注意HTML5标签在前端开发中的使用: 3.前端制作要舍弃CSS float属性(可flex布局),用绝对定位不利于页面布局的扩展: 4.APP前 ...