JAVA从入门到精通学习笔记 LESSON3
韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

韩顺平笔记第1讲内容介绍.项目演示.原理剖析1. 课程包括:面向对象编程,图形界面,数据库编程,文件流,网络编程,的多线程2. 历史:1990 启动绿色计划 1992 创建语言—>1994 参加硅谷大会演示功能震惊世界 1995 正式发布第一个版本,目前最新的是7.03. 开发工具:记事本,,,,4. 包括:(运行环境)的工具:编译器解释执行器的类库:3600多个,常用的150多个5. 第一个程序:功能:显示―‖:表示类是公共的,一个文件中只有一个类 :表示这个是一个类:类名(公共类的类名,必须和文件名一样){一个主函数,程序的入口 ( []) {执行语句("!"); } }6. 源程序(文件)——>字节码文件(文件)——>由解释执行器()将字节码文件加载到虚拟机()——>字节码文件()就会在虚拟机中执行); } }第2讲变量.数据类型1. 在里面占4个字节,占8个字节2. 基本数据类型:整数:(一个字节:-128127 四个字节:-247483647两个字节:-3276832767 八个字节:)小数(浮点):布尔:字符:(两个字节,可以存放汉字, 1 ='中';)引申到字符串(类)3.在中对进行运算的时候,直接是当做码对应的整数4.数据不能从高精度到低精度的转换<<<<<3.4;是过不去的,在中小数默认是(双精度)的应该写成是3.4f;不过可以强制转换:()1.2; ()1.95. 1 1.2; a先是往高精度转换,然后赋给b,就报错改成1 1.2; 或者 1 1.2f; 就解决了第4讲流程控制1. 语句中,条件表达式的数据类型应该和后面的类型一致2. 语句中,可用的数据类型主要是:第5讲类与对象1. 面向对象编程-类与对象类名首字母大写类里面的元素叫类的成员变量/属性2. 类的定义包名;类名父类接口名{成员变量;构造方法;成员方法;}3. 如何创建对象:先声明再创建1;1 ();一步到位 1 ();4. 引用传递类似于指针一样第8讲类变量1. 属于类的对象的而不是属于类的2. 5不能在类的外部使用,只能在类定义时候使用!3. 可以用类名直接访问静态变量第9讲类方法封装1.类变量是该类的所有对象共享的对象,一改全改了2.定义语法:访问修饰符数据类型变量名3. 9{1;{("");;}会自动执行一次,也只有一次9(){("");;}( []){9 t1 9();(9);9 t2 9();(i);}}4.类方法(静态方法、静态函数):属于所有对象实例的5中:类变量()原则上用类方法()去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)使用:类名.类方法名对象名.类方法名6.非类变量就是实例变量,属于每个对象自己的7面向对象编程的三(四)大特征:封装、继承、多态(、抽象)8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
第三章JAVA语言基础笔记

Java语言基础本章的主要目标:1、了解java的主类的结构;2、了解java语言中的基本数据类型;3、了解java语言中的常量和变量;4、了解java语言运算符的使用;5、了解java语言数据类型的转换;6、了解java语言中代码注释与编码规范;Java主类结构Java语言是面向对象的程序设计语言,java的基本组成单元就是类,类体又包括属性和方法,而每一个程序都必须包含一个main()方法,含有main()方法的类称之为主类;我们用一个程序来看一下主类的结构:public class First{static String s1=”java”;public static void main(String args[]){String s2=”学习之旅!”;System.out.println(“s1”);System.out.println(“s2”);}}这就是一个简单的java程序,包含了类的结构;需要注意的是,java代码中所有的标点符号,括号都是需要在英文状态下输入;否则在编译的时候将会报错;通常将类的属性称之为类的全局变量(又叫成员变量),将方法中的属性称之为局部变量;全局变量声明在类体中,局部变量声明在方法体中;Java程序中的main()方法必须声明为public staticvoid 。
main()方法是程序开始执行的位置;Java语言严格区分大小写;基本数据类型Java中的基本数据类型有字符和数字之间可以相互转换;在程序执行过程中,其值不能改变的量称为常量,其值能改变的量称之为变量;Java语言规定标识符由任意顺序的字母、下划线、美元符号、和数字组成,并且第一个字符不能使数字字符;Java中允许使用汉字或其他语言作为变量名,但不建议使用;常量名通常使用大写字母,但这并不是必须的,很多java程序员使用大写字母表示常量,常常是为了清楚的表明正在使用常量;由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点后,该变量会被释放掉,也就是说变量有他的生命周期;在一个方法中,局部变量和成员变量同名时,此时成员变量将被隐藏,即这个成员变量在这个方法中暂时失效;如果从低精度类型向高精度类型转换,则永远不会溢出,并且总是成功的;把高精度类型转换为低精度类型则必然会有信息的丢失;从低精度类型向高精度类型转换,系统自动执行,程序员无需进行任何操作,这种类型的转换又叫隐式转换,从高进度类型向低精度类型转换,则需要强制执行,又叫强制类型转换,又称显示转换;当一个数超过了要转换的类型的最大值,则转会后的数值则会变为最小值,这也可以理解为数据的溢出;代码注释分为单行、多行、和文档注释;编码规范,简言之就是利人利己;。
韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)

java平台1、J2SE java开发平台标准版2、J2EE java开发平台企业版java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。
不同系统上要安装对应的虚拟机才可以运行java程序开发步骤1、编写源文件(.java)2、编译源文件为类文件(.class)可用J2SE或J2EE编译3、在虚拟机上运行注释ava文件)2、java编译器即3、java字节码文件(.class文件)4、由解释执行器即将字节码文件加载到java虚拟器(jvm)5、字节码文件(.class)就会在java虚拟机中执行对程序进行改过使之变为一个简单的加法运算程序;.case 常量n:语句n;break;default:语句;break;}*****:switch中的可用数据类型主要是:允许byte,short,int,char,enum等1、单分支控制作业:请大家看个案例[]:编写一个程序,可以输入人的年龄,如果该同学的年龄大于18岁,则输出“你年龄大于18,要为自己的行为负责!”2、双分支控制作业:请大家看个案例[]:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18岁,要对自己的行为负责!”否则,输出“你的年龄不大这次放过你了”3、多分支控制作业:请大家看个案例[]编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。
如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。
其它情况,则输出“小孩子,下次注意”。
4、多分支控制作业:请大家看个案例[]请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,ga表示星期一,b表示星期二...根据用户的输入显示相应的信息,要求使用switch语句完成。
5、多分支控制作业:请大家看个案例[]对比switch与if语句在执行分支语句的区别。
java编程思想第三章总结

java编程思想第三章总结Java编程思想第三章主要介绍了Java中的一些基本概念和语法,如变量、数据类型、运算符、控制流语句等。
通过学习本章内容,我对Java程序的结构和执行流程有了更深入的了解,也明白了如何使用这些语法元素来构建一个完整的程序。
首先,我了解到Java是一种面向对象的编程语言,所以在Java中一切皆对象。
每个对象都有一个对应的类,类是对象的抽象描述,它定义了对象的属性和行为。
在Java中,我们可以使用类来创建对象,并通过调用对象的方法来实现某些功能。
例如,可以创建一个“人”类,其中包含姓名、年龄等属性,还包含一些方法如走、说等。
通过这些方法,我们可以让人对象执行一些特定的行为。
其次,Java中的变量是用来存储数据的,它们具有特定的数据类型。
Java提供了多种数据类型,包括整数、浮点数、字符、布尔值等。
每种数据类型都有自己的范围和精度。
在使用变量之前,我们需要先声明变量的类型,并为其分配内存空间。
变量的命名需要符合一定的规则,如只能包含字母、数字、下划线等,并且不能以数字开头。
Java中的运算符用于执行各种数学和逻辑运算。
常见的算术运算符包括加、减、乘、除等;常见的比较运算符包括大于、小于、等于等;常见的逻辑运算符包括与、或、非等。
通过使用这些运算符,我们可以对变量和表达式进行各种运算。
另外,Java还提供了一些特殊的运算符,如三元运算符、位运算符等,用于某些特殊的计算。
控制流语句用于控制程序的执行流程,其中包括条件语句和循环语句两种类型。
条件语句用于根据不同的条件来执行不同的操作,常见的条件语句包括if、if-else、switch等。
循环语句用于多次执行某段代码,常见的循环语句包括for、while、do-while等。
通过使用这些语句,我们可以根据需要来控制程序的执行流程,增强程序的灵活性和可控性。
此外,Java还提供了一些常用的工具类和方法,可以简化开发过程。
这些工具类包括Math、String等,它们提供了各种常用的数学和字符串操作方法。
Java学习笔记(必看经典).pdf

比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。
关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a 为对象变量,Animal 是类名。 上面语句是判定 a 是否可以贴 Animal 标签。如果可以贴则返回 true,否则返回 false。
在上面的题目中: a instanceof Animal 返回 True, a instanceof Dog 也返回 True,
This 表示当前对象。
Public void printNum(){ Int number=40; System.out.println(this.number);
} 此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。
This.number 表示实例变量。 谁调用 this.number 那么谁即为当前(this)对象的 number 方法。
可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public student(int a,string name){ } 为两个不同的构造方法。 如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。 练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。 (编写一个程序验证对象的传递的值为地址) 注意下面这种形式: static void changename(student stu){stu.setName “LUCY”} 注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。
Java从入门到精通(第3版)

7.1 面向对 象概述
7.2 类
7.3 类的构 造方法
7.6 对象
第1篇 基础知识
01
7.7 小 结
02
7.8 实 践与练
习
7 类和对象
第1篇 基础知 识
8 包装类
8.1 Integer
8.4 Character
8.2 Boolean
8.5 Double
8.3 Byte
8.6 Number
01
19.2 TCP程序 设计基础
19.3 UDP程序 设计基础
第2篇 核心技术
19 网络通信
19.4 小结
19.5 实 践与练 习
第2篇 核心技术
20 数据库操作
1
20.1 数据库基础知识
2
20.2 JDBC概述
3
20.3 JDBC中常用的类和接口
4
20.4 数据库操作
5
20.5 小结
6
20.6 实践与练习
3.4 运 算符
第1篇 基础知识
3 Java语言基础
3.2 基 本数据 类型
3.5 数 据类型 转换
3.3 变 量与常 量
3.6 代码 注释与编 码规范
第1篇 基础知识
01
3.7 小 结
02
3.8 实 践与练
习
3 Java语言基础
第1篇 基础知识
4 流程控制
01
4.1 复合语 句
05
02
4.5 实践与 练习
28.7 公 共类设 计
28.10 进 货单模块 设计
第4篇 项目实战
28 企业进销存管理系统
28.8 系统 登录模块 设计
(完整word版)Java学习笔记(必看经典)
诚信、创新、开放、合作JAVA的面向对象编程--------课堂笔记面向对象主要针对面向过程。
面向过程的基本单元是函数。
什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
后者以前者为基础。
大的对象的属性也可以是一个对象。
为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。
方法的定义非常重要。
方法有参数,也可能有返回值。
注意区分:对象(本身)、对象的实现者、对象的调用者。
分析对象主要从方法开始。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:class Student{代码}注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
韩顺平老师java视频课程笔记1-13课
JA V A学习记录第一讲//pulic:表示这个类是公共的,一个java文件中只能有一个public类//class :表示这是一个类//Hello:类名(公共类的类名必须和文件名一致)public class Hello{//一个主函数,相当于是程序的入口public static void main (String args[]){/* 多行注释*///System.out.println("hello");int a=10;// 定义一个变量,变量名位a,它的值为10// int为4个字节,long为8个字节int b=20;int result=a+b//输出结果system.out.println("结果是"+result)}}第二讲JA V A基本数据类型四大类型整数类型小数(浮点)类型基本数据类型布尔类型字符类型1.整数类型整数类型表示一个整数,常用的整数类型有:byte, short, int, long范围:byte 一个字节-128 – 127short 两个字节-32768 - 32767int 四个字节-2147483648 – 2147483647long 八个字节一个字节= 八个byte例:一个byte0 0 0 0 0 0 0 1 最高位为符号位0表示正数,1表示负数1 1 1 1 1 1 1 1 – 0 1 1 1 1 1 1 12.小数(浮点)类型常用类型有float, double3.布尔类型可以表示:真或者假,类型是boolean4.字符类型表示单个字符,字符类型是char,chai是两个字节,可以存放汉字。
多个字符称为字符串,在java中用String表示,String属于类。
.在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。
(汉字则是unic码)定义变量int a初始化变量int a = 45给变量赋值int a ; a =45基本数据类型转换int a = 1.2 错误会损失精度double a = 4 正确数据类型可以自动从低精度向高精度转换。
java课堂笔记(全部基础知识)
Java_U1课堂笔记(一)初识Java一、配置Java环境变量:1、复制JDK安装路径,如:C:\Program Files (x86)\Java\jdk1.7.0_51\bin2、粘贴到我的电脑->属性->高级系统设置->环境变量->Path3、加上英文的分号4、验证是否配置正确:dos-->java -version进入DOS窗口的方法:运行(或快捷键windows键+r)二、Java程序编写三步骤:编写 .java编译:javac **.java运行java **三、使用jad反编译工具:DOS中切换至jad安装目录,如:C:\jad1.5.8g.win输入命令:jad -s java D:\t01\HelloWorld.class四、变量的使用:页脚内容1变量取名,命名规则类型数值:int、double、float(f)非数值:char、String类型名字= 值;int age=10;五、上机验证:System.out.println(5+3);System.out.println("5"+3);六、Scanner的使用,接收用户键盘输入Scannerimport java.util.Scanner;Scanner input=new Scanner(System.in);input.next();(相关方法,nextDouble()、nextFloat()、nextInt(等)bin:exejre页脚内容2libsrc.zip(二)数据类型一、数据类型转换自动类型转换:int num=100;double b=num;强制类型转换double num=100.9;int b=(int)num;二、运算符赋值运算符=算数运算符+ - * / % ++ --+= -= *= /= %=关系运算符> < >= <= == !=逻辑运算符&& || !页脚内容3条件运算符?:了解优先级即可三、流程控制1、if:基本ifif-else多重if嵌套if注意:条件是boolean值常见错误:if(num=5){}else{}大括号不省略多重if顺序问题注意:页脚内容4流程图的使用和问题的分析解决过程2、switch等值比较注意:(1)语法上的常见错误(2)和多重if的异同循环结构:解决重复性的操作简介高效(三)循环结构一:循环:(1)while循环while(条件){操作循环变量迭代}注意:页脚内容5代码缩进循环能否正常退出(2)do-while循环do{循环}while(条件);注意:代码缩进循环能否正常退出和while的区别:语法上、执行上(至少执行一次)(3)for循环for(变量初始化;条件;变量迭代){循环操作}页脚内容6注意:代码缩进循环能否正常退出执行顺序循环变量可以有多个二、双重循环双重循环的特点:外层循环进入一次,内层循环就要完整的执行一遍特点:外执行一次内执行一轮双重循环次数:外层循环次数*内层循环的次数实现的重点:页脚内容7(1)确定谁做外层循环,确定谁做内层循环(2)两层循环变量有没有规律性的关系1、打印图形:找规律矩形行i外层星星j内层1 52 53 54 55 5平行四边形行i外层内层:空格星星1 4=5-i 52 3=5-i 53 2=5-i 5页脚内容84 1=5-i 55 0=5-i 5等腰三角形行i外层内层:空格星星1 4=5-i 1=2*i-12 3=5-i 3=2*i-13 2=5-i 5=2*i-14 1=5-i 7=2*i-15 0=5-i 9=2*i-12、打印九九乘法表行i(1-9)第一个操作数i 第二个操作数(从1到i)三:循环应用1、分析需求:重复做一件事情前提条件(循环进入的条件)做什么事情(循环操作)页脚内容92、用代码解释选择一种合适的循环结构whiledo-whilefor根据所选择的结构套用语法while(条件){}do{}while(条件);for(循环变量初始化;条件;迭代){}3、容易出错的点(1)变量在何处声明例1:计算5门课平均成绩页脚内容10例2:for(int i=0;i<=6;i++){System.out.println(i);}int j=i;System.out.println(j);(2)没有适当的(合适的)跳出循环根本跳不出来根本进不去循环多或少循环了一次四、循环的跳转break:跳出整个循环continue:跳出本次循环,进入下次循环return:结束方法(了解即可)五、程序调试页脚内容11设置断点Debug->单步运行F5 F6观察变量(三)数组一、数组1、数组的基本使用(1)数组的作用一组相同数据类型的数数组也是变量,内存中一串连续的空间(2)数组的几个基本概念标识符(数组名字)元素下标:从0开始数据类型数组的长度(数组名字.length)(3)数组使用步骤声明数组页脚内容12int[] num;int num[];分配空间num=new int[8];赋值处理数据int[] num={5,8,7};int[] num=new int[]{5,8,7};(4)循环和数组结合的使用下标(0-数组.length-1)遍历时两种方法:方法一:传统for方法二://增强型for(foreach)for(int score:scores){sum+=score;页脚内容13}二、回顾数组变量,内存中一串连续的空间相同数据类型的一组数据数组的基本概念元素数据类型(数组类型)下标(0,数组.length-1)数组的长度:数组.length数组的基本使用声明数组(类型[] 数组名称或类型数组名称[])分配空间(数组名称= new 数据类型[5];)赋值(num[0]= ;)处理数据变量:基本数据类型页脚内容14int、double、float、char、boolean引用数据类型String、数组内存分布不同使用上不同.三、数组的典型使用1、求最大值、最小值(打擂台)2、插入算法(找位置)3、冒泡排序数组存储5个数字下标:0 1 2 3 4外层循环内层循环i:0第一轮+ j比较次数:4 =4:length-1页脚内容15i:1第二轮+ j比较次数:3=4:length-1i:2第三轮+ j比较次数:2 =4:length-1i:3第四轮+ j比较次数:1=4:length-1i+j=数组.length-1j=数组.length-1-i共比较几次?5个数字:4+3+2+1=106个数字:5+4+3+2+1=157个数字:6+5+4+3+2+1=21n个数字:(n-1)+(n-2)+(n-3)+.....+1=n*(n-1)/24、Arrays类的使用常用方法:页脚内容16sort().....记得查API帮助文档(帮助文档已经在网盘中提供了,如果大家在Oracle官网中没有下载,可以找中心的技术顾问老师提供网盘用户名和密码,登录后拿到帮助文档)数据类型基本数据类型int double char boolean 。
JAVA学习完整版详细笔记
Java基础知识总结Java基础知识总结写代码:1,明确需求。
我要做什么?2,分析思路。
我要怎么做?1,2,3。
3,确定步骤。
每一个思路部分用到哪些语句,方法,和对象。
4,代码实现。
用具体的java语言代码把思路体现出来。
学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。
demo4,该技术什么时候用?test。
-----------------------------------------------------------------------------------------------一:java概述:1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java;Java的三种技术架构:JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdkpath=%JAVA_HOME%\bin2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要内容●包●类的说明符●对象的销毁(垃圾内存回收的演示)●接口●异常处理包(package)●为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入包(package)。
javaiolangSystem String●package语句必须是文件中的第一条语句。
也就是说,在package前,除了空白和注释之处不能有任何语句。
●如果不加package语句,则指定为缺省包或无名包。
●包对应着文件系统的目录层次结构。
●在package语句中,用“。
”来指明包(目录)的层次。
-------------------------------------------------------------------------------------------------------package mybole;//package语句必须是java原文件中的第一条语句,//换句话说,package语句前除了出现空白或解释之外,//不能再有其它的语句了.在给包取名的时候采用小写//形式,然后在包的名字后面加上分号class Test{public static void main(String[]args){System.out.println("package test!");}}编译:javac Test.java没有错误执行:java Test出现了错误。
这是因为,java中提供的包是与目录层次结构相对应的,当给Test这个类取名为mybole时,要求在我们的硬盘上面有这样一个mybole的目录,并且在这个目录下有Test.class这个文件。
因此,要在相应的目录下新建一个文件名与Test类中引用的包(即包名为:mybole)名完全一致的文件。
事实上执行的Test类的完整名字应该是:mybole.Test在新建mybole文件夹后并将编译产生的Test.class类文件放在mybole文件夹中,按以下操作可能正确结果:java mybole.Test运行的结果为:package test!-------------------------------------------------------------------package cn.mybole;class Test{public static void main(String[]args){System.out.println("package test!");}}包cn中含子包mybole这就要求在相应的目录下新建cn文件夹,在cn文件夹下新建mybole子文件夹,将重新编译得到的Test.class置入mybole文件夹下。
编译:javac Test.java执行:java cn.mybole.Test运行结果为:package test!编译并生成包●在当前目录下生成包:javac–d.Test.java//一个点号表示当前目录,两个点号表示上一层//目录。
●在指定目录下生成包(如在D盘下):javac–d D:\Test.java●可以通过设置环境变量classpath来指向Test.class(假设在E:\cn.mybole下):set classpath=%classpath%;E:\;/*注意这里非常容易出错若将“E:\cn.mybole;”代替这里的“E:\;”就会出错。
因为当执行java cn.mybole.Test它在“E:\cn.mybole;”目录下查找“cn.mybole.Test”类文件,显然是找不到的。
这是非常容易出现的错误,应当重视。
*///%classpath%表示先前的classpath变量值。
这样在任何目录下都能执行了。
这里还有个容易出现的错误,那就是在设置的classpath=%classpath%;E:\;当执行java cn.mybole.Test时会顺着这条路径查找,一旦在%classpath%中找到了Test类,就会停止查找。
这里就要分清是要执行的是哪个目录下的类。
import语句●引入包中的类。
import java.io.File●引入整个包。
如:import java.io.*;●在同一包中的类可以互相引用,无需import语句。
注意:当我们访问System类和String类,为何我们没有通过import语句导入呢?这是因为java。
lang包自动导入的,不需要显式地加上import语句。
然而,当我们要访问其它包中的某一个类的时候,我们就必须用import语句将这个类导入,否则java编译器就不认识你写的这个类名。
当我们在文件当中导入了某个类之后,访问的时候就可以直接用这个类名,如果不导入,则需要将完整的类名写全了。
当然,也可将整个包导入,但这样是以消耗大量内存为代价的。
以下三种方式都能引用File类。
package cn.mybole;//自定义包import java.io.File//导入已有包class Test{public static void main(String[]args){File=f;System.out.println("package test!");}}package cn.mybole;//自定义包class Test{public static void main(String[]args){java.io.File=f;System.out.println("package test!");}}package cn.mybole;//自定义包import java.io.*;//使用通配符将所有的io包导入class Test{public static void main(String[]args){File=f;System.out.println("package test!");}}----------------------------------------------------------------------------------------------------------------------package cn.mybole;class Test2{}package cn.mybole;class Test{Public static void main(String[]args){Test2t2=new Test2();}}编译:javac–d.Test2.java编译:javac–d.Test.java//要注意编译的先后次序不能颠倒。
执行:java cn.mybole.Test或者这样:javac–d.*.java//表编译后缀名为java的文件,//这样就不必考虑编译的先后顺序java cn.mybole.Test类的说明符(1)public(2)default(不加访问说明符时)类的其它修饰符(1)final(2)abstractpackage com.sunlight;public class Test2//public不可缺少{}package cn.mybole;//import com.sunlight.Test2;class Test{public static void main(String[]args){com.sunlight.Test2t2=new com.sunlight.Test2();//若使用了import导入,//则不需用包的路径。
}}引用不同包中的类,则要求被引用的类的说明符为public类型的,否则出错。
-----------------------------------------------------------------------------------------方法的说明符(1)public(2)protected(3)default(不加访问说明符时)(4)private方法的其它修饰符(1)static(2)final(3)abstract(4)native(5)synchronizedpackage cn.mybole;public class Test{public void pubMethod(){System.out.println("pubMethod");}protected void proMethod(){System.out.println("proMethod");}void defMethod()//缺省的为不加任何访问说明符{System.out.println("defMethod");}private void priMethod(){System.out.println("priMethod");}public static void main(String[]args){Test t=new Test();t.pubMethod();t.proMethod();t.defMethod();t.priMethod();}}运行结果为:pubMethodproMethoddefMethodpriMethodpackage cn.mybole;public class Test2extends Test{public static void main(String[]args){Test t=new Test();t.pubMethod();t.proMethod();t.defMethod();t.priMethod();}}编译时出错:priMethod()方法是私有的,不能被访问package com.sunlight;import cn.mybole.Test;public class Test2extends Test{public void fn(){pubMethod();proMethod();defMethod();priMethod();}public static void main(String[]args){}}编译时报错:defMethod()方法和priMethod()方法不能调用p ublic protected default private 同类√√√√同包√√√子类√√通用性√通用性:指两个类属于不同的包,且不存在继承关系。
package com.sunlight;import cn.mybole.Test;public class Test2//extends Test{public static void main(String[]args){Test t=new Test();t.pubMethod();t.proMethod();t.defMethod();t.priMethod();}}编译报错:proMethod()方法,defMethod()方法,priMethod()方法都不可访问。