day02java基础变量-working
- 格式:docx
- 大小:774.05 KB
- 文档页数:20
Java编程语言基础知识Java是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。
它是一种通用的、高级的、并发性强的编程语言,被广泛应用于各种领域,包括企业级应用开发、移动应用开发、嵌入式系统等。
本文将介绍Java编程语言的基础知识,包括语法、数据类型、运算符、控制流程、面向对象等方面。
一、语法1. 注释Java中的注释有三种形式:单行注释(//)、多行注释(/* ... */)和文档注释(/** ... */)。
注释是用来解释代码的作用,提高代码的可读性。
2. 类和方法Java程序由一个或多个类组成,每个类包含一个或多个方法。
方法是执行特定任务的代码块。
一个Java程序必须包含一个包含main方法的类,作为程序的入口点。
3. 变量和常量在Java中,变量用于存储数据,常量是不可改变的值。
变量必须先声明后使用,可以在声明时初始化,也可以在后续代码中赋值。
常量使用关键字final声明,一旦赋值后就不能再修改。
二、数据类型Java中的数据类型可以分为两大类:基本数据类型和引用数据类型。
1. 基本数据类型Java提供了8种基本数据类型:byte、short、int、long、float、double、char和boolean。
这些类型分别用于存储不同类型的数据,如整数、小数、字符和布尔值。
2. 引用数据类型引用数据类型包括类、接口、数组等。
它们是由基本数据类型组成的更复杂的数据结构。
三、运算符Java提供了一系列运算符,用于对数据进行操作。
1. 算术运算符算术运算符用于执行基本的算术操作,如加、减、乘、除等。
2. 关系运算符关系运算符用于比较两个值之间的关系,如相等、大于、小于等。
3. 逻辑运算符逻辑运算符用于对布尔值进行逻辑运算,如与、或、非等。
四、控制流程控制流程用于控制程序的执行顺序,包括条件语句、循环语句和跳转语句。
1. 条件语句条件语句根据条件的真假来执行不同的代码块。
1、如何书写第一个java代码public class Test{public static void main(String[] args){System.out.println("我要自学网");}}/*print与println的区别,前者为直接打印,后者为打印并换行,相当于print("我要自学网\n")*/2、如何使用注释:注释包括单行注释和多行注释单行注释以//开始,行末结束多行注释以/*开始,*/结束public class Test{//类名Test必须与文件名保持一致public static void main(String[] args){//void不能省略,String第一个字母必须大写System.out.print("我要自学网\t\t");/*System第一个字母必须大写每局代码需以分号“;”结束,\t为输出控制*/System.out.print("我要尹华彬\n ")}}3、常用的几个控制输出符(必须在双引号里面)\t 输出8个空格,相当于一个制表位\n换行4、5、变量的三要素:变量类型(数值型int&double和非数值型char&string,数字型又可分为整型int和非整型double),变量名称,变量的值。
public class Test{public static void main(String[] args){char a=’女’; //字符型用单引号int b=23; //声明变量并赋值double c;//声明变量c=1.23;//变量赋值String d; //红蓝代表声明变量时的两种不同方式d=”我要自学”//字符串用双引号System.out.println("a");//所有变量都需先赋值后使用System.out.println("b");System.out.println("c");System.out.println("d");}}6、如何使用变量第一步声明变量第二步给变量赋值public class Test{public static void main(String[] args){int number=23;System.out.println("number");}}7、变量的命名变量命名规则:第一位只能是字母、下划线“_”或者“$”,剩余部分可以是数字、字母、下划线“_”或者“$”。
java变量和常量是什么java变量和常量是什么java在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。
以下是店铺为大家搜索整理的java变量和常量是什么,希望能给大家带来帮助!在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。
1.1变量变量代表程序的状态。
程序通过改变变量的值来改变整个程序的状态,或者说得更大一些,也就是实现程序的功能逻辑。
为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。
例如在2D游戏程序中,需要代表人物的位置,则需要2个变量,一个是x坐标,一个是y坐标,在程序运行过程中,这两个变量的值会发生改变。
由于Java语言是一种强类型的语言,所以变量在使用以前必须首先声明,在程序中声明变量的语法格式如下:数据类型变量名称;例如:int x;在该语法格式中,数据类型可以是Java语言中任意的类型,包括前面介绍到的基本数据类型以及后续将要介绍的复合数据类型。
变量名称是该变量的标识符,需要符合标识符的.命名规则,在实际使用中,该名称一般和变量的用途对应,这样便于程序的阅读。
数据类型和变量名称之间使用空格进行间隔,空格的个数不限,但是至少需要1个。
语句使用“;”作为结束。
也可以在声明变量的同时,设定该变量的值,语法格式如下:数据类型变量名称 = 值;例如:int x = 10;在该语法格式中,前面的语法和上面介绍的内容一致,后续的“=”代表赋值,其中的“值”代表具体的数据。
在该语法格式中,要求值的类型需要和声明变量的数据类型一致。
也可以一次声明多个相同类型的变量,语法格式如下:数据类型变量名称1,变量名称2,…变量名称n;例如:int x,y,z;在该语法格式中,变量名之间使用“,”分隔,这里的变量名称可以有任意多个。
【黑马程序员】【java 基础】成员变量和局部变量成员变量和局部变量根据定义变量位置的不同,可以将变量分为成员变量和局部变量成员变量是在类范围定义的变量局部变量是在一个方法内定义的变量成员变量可以分为:实例属性(不用static 修饰)随着实例属性的存在而存在类属性(static 修饰)随着类存在而存在成员变量无需显式初始化,系统会自动对其进行默认初始化局部变量可分为:形参(形式参数)在整个方法内有效方法局部变量(方法内定义)从定义这个变量开始到方法结束一段时间内有效代码块局部变量(代码块内定义)从定义这个变量开始到代码块结束这一段时间内有效局部变量除了形参外,都必须显示初始化,也就是要指定一个初始值,否则不能访问。
示例代码:[Java] 纯文本查看 复制代码?001002 003004 005006007008009010 011012 013014 015016017 018package object;/** * 成员变量和局部变量 * * */ public class VariableTest { //成员变量 public static String staticname = "类属性"; public String nostaticname = "实例属性"; //没有初始化的成员变量019020021022 023024025 026027028 029030031 032033034 035036037038039 040041042043044045046047 048049 050051 052053 054 055056057 058059 060061062public static String staticname1; public String nostaticname1; //定义一个方法 public void info(){ //在方法中定义一个局部变量i //int i; //直接输出是输出不出来的,因为没有初始化 //System.out.println(i); //定义一个局部变量i 并初始化 int i = 10; //输出i System.out.println(i); } //定义了一个静态的方法 public static void infos(){ int i = 20; System.out.println(i); } public static void main(String[] args) { /*第一问:类属性和实例属性的范围一样吗?*/ //在没创建实例之前 可以调用类属性,但不能调用实例属性 System.out.println(VariableTest.staticname);//结果:类属性//实例化对象之后,就可以调用实例属性了 VariableTest vt = new VariableTest(); System.out.println(vt.nostaticname);//结果:实例属性 /*--- 结论:在成员变量中,类属性的范围比实例属性大一点 ---*/063064065 066067 068069 070071 072073 074075 076077 078079 080081082083084 085086087 088089090091 092093 094095 096097 098099100 101102 103104 105106System.out.println("----------"); /*第二问:成员变量需要显性初始化吗?*/ //直接调用没有初始化的类属性 System.out.println(VariableTest.staticname1);//结果:null //用实例化对象调用没有初始化的实例属性 System.out.println(vt.nostaticname1);//结果:null /*--- 结论:成员变量会自动隐性初始化,赋给变量一个默认值 ---*/ System.out.println("----------"); /*第三问:如果用实例化后的对象去调用类属性会怎么样?*/ //vt.staticname; //这样会报错 //Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration //翻译:语法错误,插入“变量声明符”来完成局部变量声明 /*为什么会报错。
java 基本语法
Java是一种高级编程语言,具有简洁、面向对象、健壮等特点,广泛应用于企业级软件开发、云计算、移动应用开发等领域。
在学习Java 编程语言时,需要掌握其基本语法。
Java 程序由类组成,一个类包含了数据和方法。
Java 中的变量必须先声明后使用,变量可以是基本数据类型或引用数据类型。
Java 中的运算符包括算术运算符、关系运算符、逻辑运算符和位运算符。
控制语句包括 if 语句、switch 语句、while 循环、do-while 循环和 for 循环。
Java 中的数组是一种将多个变量存储在一个变量中的数据结构,可以是基本数据类型或引用数据类型。
字符串是一种引用数据类型,由多个字符组成,可以使用字符串对象的方法对字符串进行操作。
Java 中的方法是一段代码,用于完成特定的任务。
方法可以有
参数,也可以有返回值。
Java 的面向对象编程中,类可以继承另一
个类的变量和方法,也可以实现接口。
本文介绍了 Java 的基本语法,包括类、变量、运算符、控制语句、数组、字符串、方法和面向对象编程。
掌握这些基本语法,可以为后续 Java 编程的学习打下基础。
- 1 -。
Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。
⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。
2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。
3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。
另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。
4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。
5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。
6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。
多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。
7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。
java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。
8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。
合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对⼤⼩写敏感。
关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。
Java基础之java基本数据类型变量与数据类型在程序设计语言中,变量(Variable)是在内存中动态存储值的地方。
简单地理解,程序的作用就是对变量进行各种运算,所以我们首先来了解变量有哪些类型,如何定义变量。
Java要求在使用一个变量前要求必须声明它的类型。
声明一个变量就是向计算机申请内存来存储值,JVM会根据变量的类型为变量分配相应的存储空间。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符串等值。
Java中的数据类型分为两类:•基本数据类型(或者称为原生数据类型)•引用数据类型如何定义基本数据类型变量在了解数据类型之前,我们先来看看如何声明一个基本数据类型变量。
要想使用一个变量,就必须首先声明它。
以下是几个声明变量的示例:其中:•可以一次声明一个或者多个同一类型的变量,比如第一条语句声明了三个整数•可以在声明的同时,进行初始化赋值,比如第二条语句,在声明一个double类型变量的同时,将其赋值为3.1415926如果变量在声明时没有进行初始化,则在使用前需要进行赋值,否则会编译报错,比如以下程序是不能通过编译的:在使用前进行赋值就没有问题了:基本数据类型数据类型是一门程序语言的基本构成元素,Java语言提供了八种基本类型,其中包括六种数字类型(四种整数型,两种浮点型),一种字符类型,还有一种布尔型。
byte•byte数据类型是8位、有符号整数;有符号指的是有正数和负数之分•最小值是-128(-2^7)•最大值是127(2^7-1)•默认值是0•byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一short•short数据类型是16位、有符号整数•最小值是-32768(-2^15)•最大值是32767(2^15 –1)•默认值是0•short数据类型也可以像byte那样节省空间,一个short变量是int变量所占空间的二分之一int•int数据类型是32位、有符号整数•最小值是-2,147,483,648(-2^31)•最大值是2,147,485,647(2^31 –1)•默认值是0整型变量默认为int类型。
JAVA语法基础之变量和基本数据类型JAVA语法基础之变量和基本数据类型Java语言中最基础的莫过于常量和变量,它是我们保存数据,以及传递数据的常用形式。
以下就是店铺精心推荐JAVA语法基础之变量和基本数据类型,希望对大家有帮助!一、变量的概念变量是Java程序中的一个基本存储单元。
变量是一个标识符、类型及一个可选初始值的组合定义。
所有的变量都有一个作用域,即变量在某一区域有效。
基本的变量声明方式如下:type identifier [=value];其中type为Java的数据类型,identifier为变量的名称,指定一个符号或一个值为初始化变量。
初始化表达式必须产生与指定变量类型一样或兼容的值。
声明指定类型的多个变量时,使用逗号将变量分开。
例如以下几种方式都是正确的:int a;int b = 12;char c = 'c';int d = 5, e;二、基本数据类型在Java中共有8种基本数据类型,分别为:字节型(byte)、短整型(short)、整型(int)、长整型(long)、字符型(char)、浮点型(float)、双精度型(double)、布尔型(boolean)。
这些类型可以分为4组。
整数:包括字节型(byte)、短整型(short)、整型(int)、长整型(long)。
他们都是有符号整数。
浮点型数:包括浮点型(float)、双精度型(double)。
该表有小数精度要求的数字。
字符:包括字符型(char)。
表示字符集的符号。
布尔型:包括布尔型(boolean)。
一种特殊类型,仅有两个值,分别为真和假。
1、整数4种整数的取值范围如下表:大小/位取值范围类型名byte 8 -128~127short 16 -32,768~32767int 32 -2,147,483,648~2,147,483,647long 64 -9,223,372,036,854,775,808~9,223,372,036,854,775,807 这些数据都是有符号的,所有整数变量都是无法可靠的存储其取值范围以外的数据值,选择数据类型时一定要谨慎。
在本文中,我将探讨如何使用Java中的WorkJob。
WorkJob是Java 中一个重要的概念,它可以帮助我们更好地管理并发任务,提高代码的效率和可维护性。
本文将从简单到复杂,由浅入深地介绍WorkJob 的用法,并共享个人的观点和理解。
1. 什么是WorkJob?WorkJob是Java中用于管理并发任务的一个重要概念。
它允许我们将多个任务分配给不同的工作者线程,并且可以控制任务的执行顺序、优先级和并发度。
通过使用WorkJob,我们可以更好地利用多核CPU 的性能,并且可以更好地管理任务的执行流程。
2. WorkJob的基本用法在Java中,我们可以通过创建一个WorkJob对象,并将任务提交给它来使用WorkJob。
下面是一个简单的示例代码:```javaWorkJob workJob = new WorkJob();workJob.submit(() -> {// 执行任务1});workJob.submit(() -> {// 执行任务2});workJob.execute();```在这个示例中,我们首先创建了一个WorkJob对象,然后通过submit方法提交了两个任务。
我们调用execute方法来执行这些任务。
WorkJob会自动管理任务的并发执行,并在所有任务执行完成后返回。
3. WorkJob的高级用法除了基本的用法之外,WorkJob还提供了许多高级的特性来帮助我们更好地管理并发任务。
我们可以使用WorkJob来控制任务的执行顺序和优先级,可以设置任务的超时时间,还可以监控任务的执行进度。
这些特性可以帮助我们更好地满足复杂的业务需求,并且可以提高代码的可维护性。
4. 我对WorkJob的个人观点和理解个人而言,我认为WorkJob是Java中一个非常实用的工具,它可以帮助我们更好地管理并发任务,并且可以提高代码的效率和可维护性。
在我过去的项目中,我经常使用WorkJob来处理各种复杂的并发场景,比如批量数据处理、异步通信等。
java基础-类的定义、成员变量、⽅法、对象的创建与使⽤⼀.JAVA类的定义 JAVA⾥⾯有class关键字定义⼀个类,后⾯加上⾃定义的类名即可。
如这⾥定义的person类,使⽤class person定义了⼀个person类,然后在person这个类的类体⾥⾯定义person这个类应该具有的成员变量(即属性)和⽅法,如这⾥定义的int id和int age这个两个成员变量,或者叫属性,这个id表⽰⼈的⾝份证号码,⼈应该具有这个属性,age表⽰⼈的年龄,这也是⼈应该具有的。
这样就在person这个类⾥⾯定义了两个⼈应该有的属性,接下来就是定义⽅法了,这⾥定义了三个⽅法,分别是getAge()、setAge(int i)和getId(),分别⽤来获取⼈的年龄,设置⼈的年龄,获取⼈的id,getAge()⽅法获取了⼈的年龄后,将获取到的值返回,所以使⽤了return age语句,getId()⽅法也使⽤了return id语句⽤于返回获取到的id的值。
⼆. 成员变量 在JAVA⾥⾯的任何变量⾸先应该要声明,然后再赋值,然后再使⽤。
成员变量和局部变量有⼀个重要区别:成员变量在类⾥⾯声明时如果不进⾏初始化,那么JAVA会默认给它初始化,⽽局部变量JAVA不会默认给它初始化,所以在⽅法⾥⾯声明⼀个局部变量如果不给它初始化时就会出错。
默认初始化⼤多数都是0,boolean类型的为false,引⽤类型的为null,如过不记得JAVA对成员变量默认的初始化是多少的话,那就这样做,定义⼀个成员变量,不给它初始化,然后直接打印这个成员变量,打印出来的结果就是JAVA默认的初始化的值。
三、Java⾯向对象的基本概念——引⽤ 引⽤类型和基本类型有着巨⼤的区别,当声明⼀个int i=0时,系统会马上给这个i分配⼀个内存空间(在栈内存⾥⾯分配⼀⼩块区域⽤来装数字0),⾥⾯装着⼀个值为0,以后使⽤i这个名字马上就可以访问这个内存空间⾥⾯的值,这就是基本数据类型,所以基础类型就只占⼀块内存。
1.Java语言基础(常量的概述和使用)1.什么是常量* 在程序执行的过程中其值不可以发生改变2.Java中常量的分类* 字面值常量* 自定义常量(面向对象部分讲)3.字面值常量的分类* 字符串常量用双引号括起来的内容“abc”* 整数常量所有整数12, 23* 小数常量所有小数1.11, 5.56* 字符常量a. 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号,一个没有也不可以’’b. ’ A’,’a’,’0’c. ’10’不是,因为这是两个字符了* 布尔常量较为特殊,只有true(真)和false(假)* 空常量null(数组部分讲解,给引用类型赋值)4.案例演示* 用输出语句输出各种常量。
null不演示2.Java语言基础(进制概述和二,八,十六进制图解)1.什么是进制* 进制:就是进位制,是人们规定的一种进位方法。
对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
* 例如一周有七天,七进制,一年有十二个月,十二进制2.二进制的由来* 两种表示0 ,1* 其实二进制来源与中国,请看史料记载* 18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴爻yao- -和__阳爻,其进位制就是二进制,并认为这是世界上数学进制中最先进的。
20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制。
它不但证明了莱布尼兹的原理是正确的,同时也证明了《易经》数理学是很了不起的。
世界第一台计算机,有许多的开关(开关打开就是断开电路,闭合就是电路通路).开关打开就是”0”,关上就是”1”,最老的计算机是打孔机,是对纸带进行打孔,打穿就是”1”,没有打穿就是”0”.3.八进制的由来(3个bit位可以表示8种变化)* 000 001 010 011* 100 101 110 111* 0 1 2 3* 4 5 6 7* 任何数据在计算机中都是以二进制的形式存在的。
二进制早期由电信号开关演变而来。
一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
* 所以就想把一大串缩短点,将二进制中的三位用一位表示。
这三位可以取到的最大值就是7. 超过7就进位了,这就是八进制。
4.十六进制的由来(4个bit位可以表示16种变化)*0000 0001 0010 0011*0100 0101 0110 0111*1000 1001 1010 1011*1100 1101 1110 1111* 0 1 2 3* 4 5 6 7* 8 9 a b* c d e f* 但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。
5.不同进制表现同一个数据的形式特点* 进制越大,表现形式越短6.进制图解(一个bit可以有两种变化,所以可以表示二进制.3个bit有8种变化,可以表示8进制,4个bit有16种变化)7.问题,为什么卖电脑的说给我一个500G的硬盘,但是实际只有465G硬盘.* 因为厂商是按1000来算的.不是按1024算的3.Java语言基础(不同进制数据的表现形式)1.二进制的数据表现形式* 由0,1组成。
以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)2.八进制的数据表现形式* 由0,1,…7组成。
以0开头3.十进制的数据表现形式* 由0,1,…9组成。
整数默认是十进制的4.十六进制的数据表现形式* 由0,1,…9,a,b,c,d,e,f(大小写均可)。
以0x开头5.案例演示(借助计算器演示,选取程序员选项)* 输出不同进制表现100的数据。
* 0b100* 0100* 100* 0x100%%%4.Java语言基础(任意进制到十进制的转换图解)1.任意进制到十进制的转换原理* 系数:就是每一位上的数据。
* 基数:X进制,基数就是X。
* 权:在右边,从0开始编号,对应位上的编号即为该位的权。
* 结果:把系数*基数的权次幂相加即可。
2.画图练习* 二进制--十进制0b100* 八进制--十进制074* 十六进制--十进制0x3c3.学生练习* 二进制--十进制0b1010101* 八进制--十进制052* 十六进制--十进制0x524.图解5.Java语言基础(十进制到任意进制的转换图解)1.十进制到任意进制的转换原理* 除积倒取余2.画图练习* 十进制--二进制60的二进制* 十进制--八进制74的八进制* 十进制--十六进制60的十六进制3.图解(除到结果为0为止)6.Java语言基础(快速的进制转换法)1.8421码及特点* 8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。
在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
2.通过8421码的方式进行二进制和十进制的相互转换0b101转10进制60转二进制学生练习:0b1010101转10进制80转二进制3.二进制到八进制的简易方式0b111转八进制0b100转八进制4.二进制到十六进制的简易方式0b0011转十六进制0b1100转十六进制5.图解%%%7.Java语言基础(原码反码补码)1.为什么要讲解有符号数据表示法* 后面学习数据类型的时候,要学习强制类型转换,如果不知道有原反补码会看不懂结果2.有符号数据表示法的几种方式* 原码(存储的形式)* 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
* 通过一个字节,也就是8个二进制位表示+7和-7* 0(符号位)0000111------ +7* 1(符号位)0000111----- -7* 反码* 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
* 补码(进行运算的形式)* 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
*两个补码相加,最高位符号位也要参与运算,如果有进位,就溢出3.图解%%%8.Java语言基础(原码反码补码的练习)1.已知原码求补码* 0b101101002.已知补码求原码* 0b111011103.图解%%9.Java语言基础(变量的概述及格式)1.什么是变量(画图演示)* 在程序执行的过程中,在某个范围内其值可以发生改变的量(就像是数学中的未知数x,x可以是任意一个数)2.变量的定义格式* 数据类型变量名= 变量值;*在内存中的一个区域,想找到这个区域,给他一个名字,就可以找到了*这个值是字符串还是数字,Java是强类型的3.为什么要定义变量* 用来不断的存放同一类型的常量,并可以重复使用%%%10.Java语言基础(数据类型的概述和分类)1.为什么有数据类型* Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间(一个包装盒装不下大象,一个集装箱装一个西瓜显得太浪费)2.Java中数据类型的分类* 基本数据类型* 引用数据类型,面向对象部分讲解3.基本数据类型分类(4类8种)* 整数型* byte,short,int,long*8位二进制补码是采用最高位来表示符号,低7位来表示数值大小的一种编码.8位二进制码有256种状态,可以表示256个数.如果表示范围是-127~+127的话,那就会存在两个0,就是+0和-0.而实际上,0是没有正负的,不需要有两个0.因此,就用+0(00000000)来表示0,而用-0(10000000)来表示-128,因为10000000()二进制=128(十进制),而恰好它的最高位即符号位=1表示负数.这是人为规定的,但这个规定与二进制补码规则不矛盾.* 浮点型* float,double* 字符型* char 可以表示0~65535(2^16-1)* 布尔型* boolean (只有True和false两种值)4.图解5.案例演示11.Java语言基础(定义不同数据类型的变量)1.案例演示1. 定义不同基本数据类型的变量,并输出2. 赋值时候注意float类型,long类型*问题:long l = 12345678901234567为什么会报错,整数默认值是int类型,如果想标识long类型的数,超过了int的取值范围,需要在末尾加上L,最好是大写,因为小写的太像1这个数字*问题:float f=12.3为什么会报错?浮点数默认是double,一个浮点数11.3,底层存起来的时候,为什么是11.2999999999999999无限.计算机的二进制是不能精确的表示小数的,就像没有办法用十进制表示3分之一,只能是0.33333333333333(无限接近于3分之1),所以12.3其实用double表示,在底层是12.9999999999999999999999,默认是小数用double表示,所以float f=12.3会报错,因为f是浮点型,进度只用23位尾数,但是double的尾数是52位,所以会损失精度,就不可以像byte转int一样转了.12.Java语言基础(使用变量的注意事项)案例演示1.作用域问题* 同一个区域不能使用相同的变量名2.初始化值问题* 局部变量在使用之前必须赋值3.一条语句可以定义几个变量* int a,b,c...;13.Java语言基础(数据类型转换之隐式转换)1.案例演示1.int + int2.byte + int 的结果分别用byte和int类型接收,看效果(byte+int,byte数据会自动类型提升)2.Java中的默认转换规则3.画图解释byte+int类型的问题14.Java语言基础(数据类型转换之强制转换)1.强制转换问题* int a = 20;* byte b = 10;* b = a + b;2.强制转换的格式* b = (byte)(a + b);3.强制转换的注意事项(运算的时候用补码,表示数值的时候是原码)* 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同比如:int a=100; byte b=50;b=(byte)b+a;15.Java语言基础(面试题之变量相加和常量相加的区别)1.案例演示* 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
* byte b1 = 3;* byte b2 = 4;* byte b3 = b1 + b2;* 从两方面去回答这个题* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值* byte类型的变量在进行运算的时候,会自动类型提升为int类型* byte b4 = 3 + 4;* 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果(等于7,在byte的范围内)赋值给b4了%%%16.Java语言基础(long与float的取值范围谁大谁小)1. 进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的2.byte,short,char -- int -- long -- float -- double(除了boolean)* long: 8个字节* float:4个字节* IEEE754* 4个字节是32个二进制位* 1位是符号位* 8位是指数位* 00000000 11111111(0---255)* 0到255* 1到254* 每个指数位减去127* -126到127* 23位是尾数位1.它们底层的存储结构不同。