Java学习笔记(一)

家电维修 2023-07-16 19:17www.caominkang.com家电维修技术

Java学习笔记
1.java基础
Java开发方向
java SE标准开发包含构成java语言核心的类(数据库连接、接口定义、输入输出、网络编程),安装jdk(Java开发工具包)之后自动支持此类的开发支持。
Java EE嵌入式开发包含java SE的部分类,用于消费类电子产品的软件开发。
Java ME企业开发包含Java SE的所有类,还包含用于开发企业级应用的类,例如 EJB、servlet、jsp、xml、事务控制,也是目前大型系统和互联网项目开发的主要平台。

Java语言特点简洁有效;
可移植性Java语言执行基于Java虚拟机(JVM)运行,源代码编译之后形成字节码文件,在不同操作系统上只需要植入与系统匹配的JVM就可以运行程序;
面向对象;
垃圾回收Java提供垃圾回收机制(GC),使得开发者编写程序只需考虑自身程序的合理性; 引用传递 用引用代替指针;
适合分布式计算更好的解决网络通信问题,提供了简介的Socket开发支持、适用于公共网关接口(CGI)程序开发、提供了对NIO、AIO的支持,使得网络通信性能得到强大的改善;
健壮性 ;
多线程编程支持提供了JUC的多线程开发框架; 较高的安全性 依赖于JVM解释字节码程序文件;
函数式编程有良好的函数式编程支持(Lambda 表达式支持);
模块化支持 将庞大冗余的Java分解成一个个模块,便于开发和部署。

源代码编译->.class文件 由Java虚拟机执行,JVM提供了完善的“指令集”,不同操作系统的JVM拥有的“指令集”相同,程序员只需要针对JVM指令集开发,由JVM匹配不同的操作系统,解决了程序的可移植问题。

JDK是Java专属 的开发工具,也是最底层的开发支持。开发者利用JDK进行源代码的编译,也可以进行字节码的解释执行。
JDK主要提供Java程序的开发支持,也提供有JRE支持。 JRE提供Java的运行环境,无法进行项目开发,JRE分为Server JRE(服务器端JRE)、Client JRE(客户端JRE)。

安装完成JDK和JRE,系统环境变量Path环境属性添加JDK目录,cmd运行java.exe和javac.exe 表示安装成功
Java程序严格区分大小写

public class hello{
public static void main(String[] args){
System.out.println(“hello”);
}
}

Java程序执行流程
(1)编译程序 进入程序所在目录,执行javac Hello.java,对程序进行编译,编译完成后发现目录中多了一个Hello.class文件,为最终要使用的字节码文件
(2)解释程序 输入java Hello即可再JVM上解释Java程序
Java程序以类为单位,所有的程序都在class定义范畴内。定义类

class 类{  }
public class 类{  }

使用class定义的类文件名可以与类名称不同,生成的.class文件名称是class定义的类的名称,在一个.java中可以存在多个class定义,编译后会自动将不同的class保存在不同的.class文件中。
public class定义要求文件名与类名称保持一致,一个.java文件只允许有一个public class定义

所有代码都从主方法开始执行,系统输出

System.out.println()

交互式编程工具JShell,利用此工具可以方便的执行程序,并且不再需要编写主方法就可以执行程序,在命令行输入jshell即可运行JShell工具
可以直接在JShell中编写代码,还可以直接在本地磁盘定义程序文件,然后交给JShell加载执行。

/open文件内容加载
/exit退出JShell交互式编程环境

CLASSPATH环境属性,Java程序执行依赖于JVM,用户用Java命令解释class字节码文件实际会启动一个JVM进程,JVM进程需要有一个明确的类加载路径,通过CLASSPATH环境指派。
类加载器->CLASSPATH-类加载路径->程序保存路径->字节码文件

SET CLASSPATH=D:javapath

2、程序基础
程序注释//单行注释 多行注释 文档注释

 

对于不同结构的不同说明是标识符,标识符不能数字开头,不能使用Java保留字(关键字),可以用中文定义标识符

Java数据类型基本数据类型 byte、short、int、long、float、double、char、boolean
不牵扯内存分配问题;引用数据类型 类class、接口interface、数组 操作时需要开发者分配内存。

int x = 10 ;
int 常量转换为long常量,使用“L”“l”完成max+1L
int 变量转换为long变量,使用“(long)”完成:(long)min-1

String为引用数据类型
转义字符 换行n 制表符t 双引号” 单引号’
运算符±/% ?:

普通与逻辑&: 所有判断条件都进行判断
短路与逻辑&&: 如果前面判断条件返回false,直接终端后续判断条件执行,结果为false
普通或逻辑|:所有判断条件都执行
短路或逻辑||如果有判断条件返回了true,后续条件不再执行,结果为true

位运算符 &与 |或 ^异或 ~取反 <<左移位 >>右移位 >>>无符号右移位

3、程序逻辑控制
程序逻辑顺序结构、分支结构、循环结构

if  if…else  if…else if…else
sitch(){ case : break;  default: break;}
hile(){  }  do{  }hile();
for(int i=0;i<10;i++){  }

4、方法
方法 是一段可以被重复调用的代码段

public static 返回值类型 方法名称(参数类型 参数变量,…){  
return 返回值;}

使用static关键字,因为当前方法需要定义在主类之中,由主方法直接调用
Java方法命名要求第一个单词首字母小写,而后每个单词首字母大写
方法重载方法名称进行重用的一种形式,方法名称相同,参数类型或个数不同,在调用时会根据传递的参数类型和个数不同执行不同的方法体。

public static int sum(int x,int y){ return x+y; }
public static int sum(int x,int y,int z){ return x+y+z;}
public static int sum(double x,double y){ return (int)(x+y);}

方法重载时考虑到标准性,一般建议统一返回值类型
方法递归调用是一种特殊的方法嵌套调用形式,方法自己调用自己的形式,满足条件 递归调用必须有结束条件 每次调用需要根据需求改变传递参数的内容

public static int sum(int num){ if(num==1) return 1;
return num+sum(num-1);}

5、类与对象
面向对象 最核心的基本成员类、对象
面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,不用考虑维护。面向对象要进行子模块化的设计,每个模块都需要单独存在,并可以被重复利用。

面向对象封装、继承、多态、抽象
封装把对象的成员属性和行为看成一个整体,将两者封装在一个对象中;通过信息隐蔽,把不需要让外界知道的信息隐藏起来。
继承在基础上派生出反映特殊事物的类。继承机制增强了程序代码的可重复使用,提高了软件的开发效率,降低了程序产生错误的可能性,位程序修改提供便利。一个子类只允许继承一个父类,为单继承;允许继承多个父类,为多继承。Java通过接口interface方法弥补由于Java不支持多继承而带来的子类不能享有多个父类成员的遗憾。
多态允许程序中出现重名现象。包括方法重载一个类中,多个方法使用同一个名字,方法的参数和完成功能不同;对象多态子类对象可以与父类对象进行相互的交换,根据使用的子类不同完成的功能不同。

对象表示一个个独立的个体,类 成员属性、方法
声明并实例化对象

类名称 对象名称 = ne 类名称();

对象内存Java类属于引用数据类型,使用过程中需要通过关键字ne开辟新的内存空间,对象有了内存空间才可以实现成员属性的信息保存。

heap堆内存保存对象的具体信息(成员属性);
stack栈内存保存一块堆内存的地址。

程序中每使用了关键字ne会为指定类型的对象进行堆内存空间的开辟,在堆内存中保存相应的成员属性信息。
定义类的适合,类中所有的普通成员属性都要通过private封装,封装后的属性通过setter()、getter()方法被外部使用。

构造方法是在类中定义的一种特殊方法,在一个类中使用关键字ne实例化新对象时默认调用,主要功能是完成对象属性的初始化操作。

构造方法名称和类名称保持一致;
构造方法不允许有返回值类型声明。
由于对象实例化操作一定需要构造方法的存在,所有如果类中没有明确定义构造方法,则会自动生成一个无参数无返回值的构造方法;如果类中已经明确定义了一个构造方法,则不会自动生成无参数无返回值的构造方法。
在一个类中对构造方法重载时,重载方法按照参数个数由多到少或由少到多排列,例如

public Person(){ }
public Person(String name){  }
public Person(String name,int age){  }

有了构造方法之后,可以在堆内存开辟的进行对象实例化处理,即使没有栈内存指向,该对象也可以使用一次,对于没有指向的对象称为匿名对象。例如

ne Person(“张三”,18).tell();

this描述的时本类结构调用的关键字,this可以描述3种结构的调用this.属性、this() 构造方法 this.方法名称() 普通方法、描述当前对象。
构造方法调用必须放在构造方法的首行
构造方法相互调用主要目的时提升构造方法中执行代码的可重用性。
一个类可以实例化出多个对象,这些对象都可以调用类中的方法,当前正在访问类中方法的对象时当前对象。
static关键字是一个用于声明程序结构的关键字,用于全局属性和全局方法的声明,可以避免对象实例化的限制,没有实例化对象的时候直接进行此类结构的访问。

如果想要类中某个属性定义为公共属性(所有对象都可以使用的属性),可以加上static关键字。例如static String
country=“China”;

当有一个对象修改了static属性内容后将影响到其他对象。
使用static定义方法,则可以在没有实例化对象的情况下直接调用。

static定义的方法不能调用非static的方法或属性,非static定义的方法可以调用static的方法或属性。
使用static定义的属性和方法可以在没有实例化对象的时候使用,如果没有实例化对象,就没有表示当前对象的this,所以static方法内部无法使用this关键字;

非static定义的属性和方法必须实例化对象后可以进行调用。
static关键字可以避免实例化对象的限制而直接进行属性或方法的调用,static属性可以描述公共数据的特点。

代码块普通代码块、构造代码块、静态代码块、同步代码块。
静态代码块 static{ }非主类中定义静态代码块,静态代码块优先于构造代码块执行,并且不管实例化多少个对象,静态代码块中的代码只执行一次。
主类中定义的静态代码块会优先于主方法执行。

Copyright © 2016-2025 www.jianfeikang.com 建飞家电维修 版权所有 Power by