收藏 分享(赏)

Java全部课件.ppt

上传人:gsy285395 文档编号:4529168 上传时间:2019-01-02 格式:PPT 页数:353 大小:2.75MB
下载 相关 举报
Java全部课件.ppt_第1页
第1页 / 共353页
Java全部课件.ppt_第2页
第2页 / 共353页
Java全部课件.ppt_第3页
第3页 / 共353页
Java全部课件.ppt_第4页
第4页 / 共353页
Java全部课件.ppt_第5页
第5页 / 共353页
点击查看更多>>
资源描述

1、core java的课程体系,Java语法基础 Java面向对象的编程 Java的高级编程接口:4个专题 Java图形GUI编程 多线程编程 I/O编程 网络编程,Java语言的知识体系结构图,java语法基础 Day01-Day03,Day01,了解java的产生与发展 理解java语言的特性 理解java虚拟机jvm的特性和功能 理解字节码和垃圾收集的概念 列举出在java平台上实现代码安全的方法 知道在java中定义类,包,applets和applications 掌握编码,编译,运行java应用程序的步骤 安装,搭建java开发运行环境 第一个java程序 带包的java程序 JVM搜

2、索类的顺序和类加载 CLASSPATH的应用 常用的java命令,Java的产生与发展,Java的产生 Sun公司的Green项目 基于c+开发的Oak语言 Mosaic和Netscape到JavaHot浏览器 Internet的蓬勃发展推动了java的发展(Applet) Java(爪哇) 名字的由来 Java的发展 Java的现状 纯面向对象的语言 平台无关性,一次编写,到处运行 适合于基于Internet应用程序开发 Java的地位确立 IT产业很多大公司购买了java的许可证 众多软件开发商已支持java软件产品 Intranet是企业信息系统最佳的解决方案,java发挥了不可替代的作

3、用 Java的发展与其分支 95.5.23 Oak改名为java 98.12. java1.2,后来改名为java2 陆续出现了java1.3,java1.4 2004.12 java1.5版本推出 命名为java5.0 后来陆续出现java6.0,java7.0,Java的产生与发展,Java的发展与其分支 java在今天已形成了庞大的体系,经过十年发展,已有了3个平台标准 三大技术平台都提供了相应的开发工具包(SDK:SoftWare Development Kits) java SE -标准版应用平台 java EE-企业级应用平台 java ME微型版应用平台:应用在存储,运算很小的受

4、限的平台,Java语言的特性,什么是java? 程序设计语言;开发环境;应用环境;部署环境 Java的特性 提供更简单的方式写程序 无指针,无需做内存管理 提供庞大的类库,纯粹面向对象设计 支持静态和动态的代码继承和重用 提供一个可解释执行的环境 支持任何开发平台 只写一次,到处使用 支持多线程 支持动态升级 以上特性如何实现 Java虚拟机:JVM 垃圾收集:Garbage Collection 代码安全:Code Security 字节码文件:Verifying,Java语言的特性,JVM与跨平台性: 一次编写,到处运行:不同操作系统,不同数据库,不同的服务器 数据类型也可以实现跨平台 J

5、ava虚拟机的作用 程序的开发及运行方式 Java的工作方式:先编译后解释,Java是先编译后解释执行,CPU,Java语言的特性,Java源文件先通过编译生成一个字节码文件bytecode 字节码不与当前OS相关,结构中立的,是二进制文件。任何平台编译生成的字节码都是一样的。 字节码文件不能直接执行,必须需要JVM的支撑才能运行 JVM是sun开发的,字节码的结构也是sun定义的,他们之间有很好的接口 JVM存在的意义实际上就是屏蔽掉底层平台的差异,为上层结构中立的字节码统一运行的环境,而JVM会将字节码转化成相应的底层平台的机器码执行 java解释器功能是用JVM来实现的,java的解释器

6、是在jvm中运行的 JVM的作用: 对下是屏蔽掉了底层平台的差异,对于上层的字节码而言不需要关心它运行在什么平台上,由JVM去把底层平台的差异屏蔽掉 对上为结构中立的字节码提供了统一的运行环境,实现了字节码的跨平台,JVM,Bytecode,Java语言的特性,Java的垃圾收集器 Java的垃圾收集解除了程序员分配存储器的责任,它提供了一种系统级线程以便跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。 内存泄漏 垃圾收集线程 垃圾收集调用的方法:java.lang.System.gc()/java.lang.Runtime.gc() Java

7、代码的安全性,Java语言的特性,字节码的作用 字节码的结构是JVM特定指定的 字节码不会破坏,篡改系统 禁止运行时堆栈溢出 防止蠕虫病毒袭击 参数类型正确 类型转换正确 安装,搭建java开发运行环境 官方网站下载JDK 官方网站:http:/ 不同系统平台,JDK不一样,选择适合于自己平台的JDK JDK的安装 Windows直接安装运行jdk的可执行exe文件 Linux系统将JDK文件压缩包解压后放入opt目录,配置初始化文件的环境变量 Windows下JDK安装后,会有2个文件夹生成 JDK:java开发工具软件包,它包含了java的编译,调试,运行整个环境和包含了整个类库的软件包

8、JRE:java运行环境 JDK,JRE和JVM,安装,搭建java开发运行环境,JDK,JRE和JVM jre是jdk的子集,在一套完整的jdk中就包含了jre jre只负责运行一个编译好的java程序(字节码文件bytecode) jdk它可以去编译,调试,运行整个操作过程都支持 在jre内部有一个软件组件jvm就是java虚拟机 JDK的结构简介 bin目录:java开发调试的命令, exe文件,连接库文件,编译器等等 编译一个java文件:javac;运行一个字节码文件:java jre目录:jdk中自带的jre src压缩文件:放置的是jdk类库的源码文件,按包结构组织的 demo:

9、:java代码的演示实例文件 include:用于编译本地方法的文件 docs:html格式的类库文档 lib:类库文件 Java程序开发环境配置 在windows平台:autoexec.bat文件;使用对话框(右击我的电脑属性高级环境变量系统或用户的环境变量)操作 Unix平台需要分shell:csh $HOME/.cshrc bsh/ksh $HOME/.profile 环境变量: JAVA_HOME:保存jdk的安装目录 windows : set JAVA_HOME=c:programfilesjavajdk1.5.0_09,Java程序开发环境配置,csh: setenv JAVA_

10、HOME /opt/jdk1.5.0_09 bsh/ksh: JAVA_HOME=/opt/jdk1.5.0_09 CLASSPATH:系统搜索字节码(类文件.class)文件的搜索路径。设置系统在查找字节码文件时,它的搜索路径。 windows: set CLASSPATH=.; %JAVA_HOME%jrelibrt.jar; csh: setenv CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar bsh/ksh: CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar PATH:设置命令的搜索路径,在执行命令时,操作系统就会在PATH设置的

11、路径去查找命令的可执行文件。 设置path不能覆盖原有的,可以使用特殊符号windows:%PATH%; Linux:$PATH: windows: set PATH=%PATH%;%JAVA_HOME%bin; csh: setenv PATH $PATH:$JAVA_HOME/bin bsh/ksh: PATH=$PATH:$JAVA_HOME/bin Linux系统使用bsh/ksh时则需要export JAVA_HOME CLASSPATH PATH 将环境变量设置为全局的 编辑,编译,调试,运行一个java程序 写第一个java程序:HelloWorld.java public cl

12、ass HelloWorldpublic static void main(String args)String str=“Hello World!”;,编辑,编译,调试,运行一个java程序,System.out.println(“The String is::”+str);System.out.println(“MyAge is: “+age); 通过这个程序掌握以下概念 一个java源文件中可以定义多个类,但最多只能有一个类用public来修饰,而且该public修饰的类名要与java源文件名一样。 一个java应用程序应该包含一个主方法,而且主方法的签名是固定不变的。主方法定义在哪个类

13、中并不做固定安排。 定义的所有的代码中,只看到类的定义。在类中去封装其他变量或方法。 编译HelloWorld.java程序 开始运行cmd进入dos,修改当前目录为d:javacodeday01 使用javac HelloWorld.java命令编译 编译成功后,到day01程序目录下查看,发现有2个.class文件得出有效结论 编译报错则根据错误提示找出错误位置然后修改程序重新编译 举例来演示学习错误提示 假如将String的S写为小写 :string str=“HelloWorld!“; 假如将out写为out:System.otu.println(“The String is: “+s

14、tr); 再次编译一下,查看错误提示,必须要会读错误提示 分析错误提示,排除错误是基本的能力,包的概念,含义和使用,运行HelloWorld程序: 包含有主方法的程序才可以运行,没有包含主方法的类是不能运行的 开始运行cmd进入dos;使用cd d:javacodeday01进入程序目录 使用 java HelloWorld(包含有主方法的类的类名)来运行 使用java Student就会报告错误提示没有主方法 要求学员做HelloWorld程序并操作演示几种错误情况和调错 带包的java程序 包的声明:package day01 package是关键字 day01是包名 包的概念和含义 包名

15、的命名符合标识符命名规则即可 企业项目开发中,包的命名也有企业规范的如:com.shunshi.abs.model .来隔开每一部分,每一部分都是包结构 com.shunshi这个是软件公司网址的url,可以区分确认哪个公司开发的软件产品 com.sun/com.ibm,这样包名不会产生冲突 abs是项目名,model是项目中的模块/子模块名 写MySecondJava.java程序 使用包结构 package com.shunshi.corejava.day01 使用包后,如何编译 写MySecondJava.java,使用包声明: package corejava.day01; 编译程序:

16、javac d . MySecondJava.java,JVM搜索类的顺序与类加载,-d选项的作用: 把编译好的字节码放在你指定的目录下,所以需要指定目录 如果源文件声明了包结构,那么在给定的目录位置下会按照包结构自动创建目录结构,编译好的字节码文件是放在最终的子目录下 为什么使用包? 企业项目开发中方便管理不同的类 用包来分门别类地组织不同模块功能的类 使用包的好处:举例:航班机票预定项目 JVM搜索类的顺序与类加载 使用包结构编译后,如何运行? 使用java,注意:java corejava.day01.MySecondJava 如何运行?类加载 演示错误情况的发生 直接使用 java M

17、ySecondJava 则报告找不到这个类的定义的错误提示 为什么找不到?从系统如何去找类来说,与jvm在查找类时的搜索顺序有关系 直接进入包结构目录cd corejavaday01,使用java MySecondJava运行,则报告找不到类的定义同时给出错误原因(找到的类与要运行的类不一致),Java 常用命令,为什么不一致呢?找到的是带包的,运行的是不带包的 CLASSPATH的应用 深刻理解java技术体系 如何使用第三方的java技术 常用命令 javac 选项 源文件名 编译java 源文件 -d 查看javac命令到底有哪些选项,直接使用javac/javac -help命令回车

18、java 选项 类名 参数 运行java程序 jdb 选项 类名 参数 进行debug调试的命令 javadoc 选项 包名 源文件名 生成jdk的api形式的程序文档 在java源文件中允许使用文档形式的注释 单行注释 /注释内容 多行注释 /*注释内容*/ 多行注释不能嵌套,但可以嵌套单行注释 文档注释 /*注释内容*/ 出现在类的定义,方法的定义,属性的定义之前,用来说明类的含义,方法的含义,属性的含义 使用javadoc命令给MySecondJava.java生成文档注释 在MySecondJava.java中,类前,主方法前写一些文档注释 使用javadoc命令将文件MySecond

19、Java.java中的文档注释抽取出来生成程序文档。javadoc d .doc MySecondJava.java,Java 常用命令,分析程序文档结构和理解jdk的API文档 jar ctxuvfm0Mi jar-file manifest-file -C directory files 创建/展开/更新一个jar文件 jar文件:sun公司定义的一种文件格式,与zip格式相同,可以用普通的解压缩工具解开。jar文件压缩的一般是java的字节码文件,按照包结构组织好的.class文件。 创建jar文件: 将d:corejavaday01中的1个.class文件打包成一个jar文件 jar

20、-cvf first.jar .corejava 不与源文件放在一起 c 代表创建jar文件 v 是可视化即可以看见创建过程和创建详细清单f 代表可在后面指定jar文件名 解压生成后jar文件,有corejava和META-INF2个文件夹 jar文件有什么作用? 将开发的类打包jar文件给客户,客户得到后只需要设置classpath后就可以用了 开发一个中间件,将中间件的程序打包成jar 打包day01.jar(corejavaday01中的.class)给第三个程序MyThirdJava使用。 写MyThirdJava.java程序,Jar文件和import的使用,将day01.jar路径

21、设置给CLASSPATH 将day01包下的MySecondJava.class移走 将javacodeday01下的MySecondJava.java移走 编译运行MyThirdJava来演示自定义jar文件的使用 思考问题 找不到MySecondJava,没有给包结构名 修改为corejava.day01.MySecondJava msj=new corejava.day01.MySecondJava(); String的使用不需要rt.jar路径给CLASSPATH,也不需要使用包结构名+类名 因为它是lang包下的类 若在MyThirdJava.java中自定义一个String cla

22、ss String则会报错 与JVM搜索类的顺序有关,先搜索当前包下的String,它无构造方法简便引入某包下的类 直接使用包名+类名的形式,程序太烦琐了 在程序的开头使用import 包结构名.类名来引入使用的类 要引入某包下的所有类则 import 包结构名.*;,JDK的常用包,java.lang:JAVA语言包,核心的类和接口,无需导入可直接使用。如String、Math、Integer和Thread。 java.awt/javax.swing/java.awt.event:做java的图形开发使用的包,包含有图形组件,用来构建和管理应用程序的图形用户界面。 java.applet:用

23、来开发java小程序的类和接口,包含了可执行applet特殊行为的类。 java.io:包含了java所有做输入输出的类和接口,包含处理I/O文件的类 :用来做网络开发的类和接口 java.util:java工具包,包含java开发常用的工具类,java的时间日期,java的数据结构,随机数发生等。,知道java的特殊符号 熟悉java的标识符 掌握java的关键字的使用 理解java各数据类型的存储和使用 原始数据类型 基本数据类型的转换 定义类,对象,成员变量和引用变量 类的声明 类变量与类成员变量 创建类的对象实例和使用默认值 描述引用变量与类对象的关系 掌握表达式和运算符的使用,Day

24、02,Java中的特殊符号,注释 单行注释:/ 多行注释:/*/这两种注释只能通过打开源文件来查看,写程序一定要写注释。注释与程序应是2:1 多行注释:/*/这个注释可以不打开源文件来查看,java中有一个javadoc工具,它的作用是将源文件中的/*/注释单独抽出来放在另一个文件中。例如: javadoc d . Hello.java,执行后,会在当前目录下生成一个doc目录,里面文件就可查看注释了。 其他符号 ; 一个语句的结束 一个语句块 空白字符 空格,tab,回车,换行等,Java标识符,标识符:程序中的组件名字,包括类名,方法的参数名,变量名,方法名,包名等 定义标识符的规则:以_

25、 ,$,字母开头;只含有_,$,字母,数字;没有长度限制,不能有空格;不能使用java的关键字或保留字大小写敏感 例如:_abc , $ABC ,2A ,A# ,For,顺时 Java开发的命名习惯 所有的命名要望文生义,这样才具有良好的可读性 Total,Sum,ShunshiStudent, 类名,接口名:每个单词的首字母大写,其他字母小写 如类MyFirstJava,Player,Teacher 属性,方法,,局部变量名:第一个单词全小写,从第二个单词开始以后每个单词首字母大写,其他字母小写 如方法 getName() setDoctorBirthday() 常量:每个单词所有字母全部大

26、写,单词之间用_来连接 java中使用final修饰 final int MARK_GREED=22; 包名:所有字母全部小写 如package com.shunshi.corejava.day01,Java关键字,关键字:对Java技术编译器有特殊的含义,可以被编译器识别执行 abstract do implements private throw boolean double import protected throws break else instanceof public transient byte extends int return true case false inter

27、face short try catch final long static void char finally native super volatile class float new switch while continue for null synchronized default if package this Java关键字特点 java关键字与c+很多相似,只要与c+一样的,它的含义都与c+中的相同 有些关键字c+有,而java没有 sizeof求出某种类型的变量的占内存的大小 为什么c+有sizeof? 因为不同机器内存占用空间大小不一样 16,32,64位,取决于操作系统平

28、台。 为什么Java不需要? 因为有JVM。 java中的关键字都是小写的 true、false和null为小写,而不是象在C+语言中那样为大写。严格地讲,它们不是关键字。,Java关键字,有些关键字java没有取消保留下来,但它自己也不用它也不给程序员用 goto和const不是Java编程语言中使用的关键字,而是保留字。 什么是保留字? 为什么保留下来但不能用? 在java中final替代const goto在c+代表无条件跳转,功能很好,但不能经常用,要谨慎。 很多建议去掉goto关键字,没有理解goto真正含义。 为什么c+到现在都没有删除掉goto?它有一个特殊使命 Java中使用b

29、reak代替goto 跳出一层循环 :break 跳出多层循环:break outout是一个标号,可以跳到out标识处 break避免滥用goto,把goto功能削弱了,只能跳到外层循环 java中加入新的关键字enum assert enum:枚举 assert:断言,Java的原始数据类型,boolean true/false byte 8位整型 1个字节 short 16位整型 2个字节 int 32位整型 4个字节 long 64位整型 8个字节 char 16位 unicode 字符 2个字节 double 64位浮点数字型 8个字节 float 32位浮点数字型 4个字节,boo

30、lean类型,Java中定义boolean类型 boolean b=true; Java中的boolean类型的取值只能是true,false Java中的boolean类型不能与int通用,而在c+中可以 C+中,0代表false,非0代表true boolean与int通用好还是不好呢?不好 举例说明 c+中的boolean与int通用 int a=1; if(0a2) coutaendl;,Integer 数据类型byte,short,int,long,Java中的4种整型类型,Java的不同整型占用内存空间的大小不一样Java中整型的存储规则与c+一样, 但java整型没有无符号和有符

31、号的区分,这与c+不一样。Java中所有整型都是有符号的,这样就可以求出每个整型能表示的范围。 以byte为例说明 Byte是8位整型 1个字节 最多可表示28=256个数 从(-27)-128到127(27-1) 为什么是-128-127而不是-127-128呢?与整型数据在内存的存储规则有关 整型数据在内存空间中的存储方式正整数(最高位为0)在内存中是存储原码负整数(最高位为1)在内存中是存储其补码 补码是不考虑符号情况下原码取反后末位加1。以-5来分析补码 分析一些特殊数字:8位全为1则是数字-1,8位全为0则是数字0 不考虑符号位最大的数是01111111表示数字127,最小的数100

32、00000表示数字-128,Integer 数据类型在内存的存储方式,为什么用补码存储负数?方便二进制计算,例如-128+127=-1 其他类型的整型在内存的存储方式与byte相同,只是空间更大。其他类型的整型表示数的范围如前面整型数据表示 long类型使用 l或L来表示 int的不同进制:十六进制用0x或H表示 8进制用0或O表示 10进制用D或10表示 默认类型为int 整型定义 short s1=10000; short s2=40000; 超出范围 long l=40000L; Long la=1234567l; int ia=0x55; /十六进制 int ib=011;/8进制 b

33、yte bb=0x771;/超出范围 写TestIntBool.java程序 byte a=1, b=2; byte c=a+b; int d=a+b; byte e=2;e=e+2; e+=2; int ia=0x2aff; byte bb=(byte)ia; System.out.println(bb); boolean bl1=false; if(bl1=false) System.out.println(bl1); boolean bl2=true; if(bl2=1) System.out.println(bl2);,char类型char 字符型为16位, 2个字节,与c+不一样,采

34、用的是unicode编码,unicode编码是统一编码,可包含字母,数字,符号,中文文字等 unicode码是采用16进制表示的 如u0061 2个字节的unicode编码可以表示216个字符,字符使用单引号来表示 127个ASCII码全可表示 英文字符,控制字符,数字,标点符 表示其他语言的字符:中文,德语,法语,阿拉伯等 一个char类型本质上是一个整型 char与short都是16位的,他们的差别? 通过查询unicode编码集可以获取一个整型值对应的unicode字符 unicode编码集包含了ASCII码集的 在0-127内unicode编码值与ASCII码值一样,表示的字符也一样

35、常见的ASCII码值 :A:65 a:97 0:48 通过unicode码得到码值可以将16进制转换为10进制,char zhchar=中; char enchar=a; char enchar1=97;在java中,int 与char 是可以互相转换的 char ucchar=u0061; char uchar1=u61;因为unicode是16进制的,2个字节则需要16位,需要4个16进制数 下面写一组char与int的定义,TestChar.java,char数据类型,String类型简介,Java中的转义字符 : 单引号 ” : “双引号 :顺斜杠 n:换行 t:tab制表符 b:退格

36、 0:u0000 unicode码值为0的空字符 String类型 String类型:字符串类型,它不是java的8种基本类型,是类的类型 String是java的一个类,这个类的实例叫做String对象 Java中字符串用”双引号来引用 Java中的字符串类不是以0结尾 String类是Java中使用最多的类,它有很多有用的方法,查看jdk的api文档 获得String类的对象变量 String str1=“Hello”; String str2=new String(“ World!”); String可做什么操作 使用+号来连接字符串 String s1=“12”; int ia=3;

37、int ib=4; System.out.println(s1+ia+ib); System.out.println(ia+ib+s1); char charAt(int):返回参数int指示位置上的字符 System.out.println(str1.charAt(0); String concat(String):将当前String与参数String连接起来返回新串 System.out.println(str1.concat(str2);,String类型简介,boolean contains(charSequence s):判断一个字符串中是否包含参数的子串 String str3=“

38、Hello World!”; System.out.println(str3.contains(str1); boolean equals(String):比较2个字符串内容是否相等,不忽略大小写 String s2=“Hello”; String s3=“Hello”; System.out.println(s2.equals(s3); boolean equalsIgnoreCase(String):比较2个字符串内容是否相等,忽略大小写 String s4=“heLLo”; System.out.println(s4.equals(s3); System.out.println(s4.e

39、qualsIgnoreCase(s3); int indexOf(String/char):获得参数字符/字符串在改字符串中的第一次出现的位置索引,假如找不到则返回-1 System.out.println(str3.indexOf(“Wor”); System.out.println(str3.indexOf(o); length():获得字符串的长度 System.out.println(str3.length(); 写TestString.java,演示上面String的功能,浮点型数据类型,浮点数据类型:种 float:单精度,位 个字节 使用f或者F表示 double:双精度 位 个

40、字节 默认类型 使用d或者D表示 浮点数举例 float fa=123.4f; float fb=123.4; 默认是double double直接赋给float精度丢失 float fc=12.5E300F; float fd=(float)12.5E301; double da=123D; double db=123.456d; double dc=123.45e301; 浮点数据类型的存储方式 整型存储方式是精确存储 浮点存储方式是近似存储:实数范围太大了,实数太多了,无法在内存中对应每一个实数的状态 浮点数的近似存储在程序中的问题:写TestFloat.java 实型值分母可为0,do

41、uble d=0.0/0.0; System.out.println(d);编译正确 double a=2.0,b=1.91,c=0.09; if(a-b=c) System.out.println(“ok”);else System.out.pringln(“no ok”); 结果输出”on ok”。实型数值直接比较相等不安全,不要直接比较相等,但可以比较大小。,浮点型数据类型,假如一定想要2个实型数值比较是否相等,可以考虑比较2个实型数的差是否在一个非常小的范围内 想要输出“ok”,则if(Math.abs(a-b-c)(1e-6) System.out.println(“ok”); Ma

42、th类 lang包下的类,它里面定义了很多方法来实现常用的数学运算 Math类中的方法都是静态的 Math类中的方法: abs():求绝对值 sqrt():求平方根 pow():求乘方 cos(),sin(),tan(),ctan():数学的三角函数运算 random():获得0-1之间的随机数 在TestFloat.java中测试使用Math类中的方法 Math.abs(-5) Math.sqrt(9) Math.pow(2,3) Math.random()*100:获得0-100之间的随机数,数据类型之间的转换,数据类型之间的转换分为2种 自动类型转换 a类型转换为b类型时,a的取值范围是

43、b的取值范围的完全子集 这就是自动类型转换 在java的8种基本类型中,除boolean以外,其他7种类型都是可以相互转换的。 7种原始类型之间可自动转换结构图 byteshortintlongfloatdoublechar 顺着箭头方向可自动转换;逆着箭头方向则是强制转换 强制类型转换:只要不能自动转换的,则只能是强制转换 整型数据之间的强转:改变数据的符号;改变数值 int a=0x2aff; byte b=(byte)a; b为-1 强制转换的原理:从最低位开始取到目标类型长度为止 整型之间的强转是保留二进制低位,去掉高位,需要考虑在内存中如何存储 实型强转整型是保留整数,去掉小数,不考

44、虑实型在内存中的如何存储 写一个DataTypeTest.java程序演示数据类型转换,数据类型之间的转换,byte+byte会自动提升为int byte a1=1,a2=2;byte a3=a1+a2;(精度丢失) +=不进行类型提升 byte c=3; c=c+3; c+=3;System.out.println(c); 默认整型为int,int,long提升为float有精度丢失 float fa=37; System.out.println(fa); int ia=(int)fa; System.out.println(ia); long la=0xffffffffffL;float

45、fb=la;System.out.println(fb); long lb=(long)fb; System.out.println(lb); 整型之间的强转 int a=0x2aff; byte b=(byte)a; System.out.println(b); float转换为double会有精度丢失 float fe=1234.56f; double de=fe; System.out.println(de); float ff=(float)de; System.out.println(ff); 整型除法 System.out.println(5/2); System.out.prin

46、tln(float)5/2); char与int的转换 char c1=A; int iic=c1;System.out.println(iic); char c2=99; System.out.println(c2);,Java中的特殊类型对象,为什么会有对象? 早些时候的编程语言和初级程序员将每个变量看作相互无关的实体。例如,如果一个程序需处理某个日期,则要声明三个单独的整数:int day, month, year; 尽管这种作法很容易理解,但它存在两个重大缺陷 名称太多,会引起混乱 忽略了各个变量之间的联系 例如:若程序需同时记录几个日期,则需要三个不同的声明,要记录两个生日, 则要使

47、用int myBirthDay, myBirthMonth, myBirthYear;int yourBirthDay, yourBirthMonth, yourBirthYear; 忽视了日、月和年之间的联系并把每个变量都作为一个独立的值,每个变量都是一个独立单元(在本例中为date)的一部分并被相应地处理 Java的对象类型 为克服上述两种缺陷,Java编程语言使用类来表示这种新类型 Java除了中基本类型,还有一种类类型或者叫做对象类型(或是一个类,或是一个接口) Java的类类型不是表达一个简单的数据,而是表达一个较复杂的数据(复合数据),Java中的特殊类型对象,例如:描述一个学生,

48、定义一个学生类,它包含学生的相关信息:姓名,性别,年龄,专业 创建一个学生类class Studentprivate String name;private boolean sex;private int age;private String major;public Student(String name,boolean sex,int age,String major)this.name=name;this.sex=sex;this.age=age;this.major=major;public void setName(String name)this.year=year;public

49、void setSex(boolean sex)this.sex=sex;,Java中的特殊类型对象,public void setAge(int age)this.age=age;public void setMajor(String major)this.major=major;public String getName()return name;public boolean getSex()return sex;public int getAge()return age;public String getMajor()return major; Student就是一个新的类型,就像int,float等一样可以用来定义变量 例如:Student stu; 声明一个Student的变量stu,则它里面的name,sex,age,major也都隐含声明了,name,sex,age,major称为stu的成员变量。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报