小白自学java总结

复习Java总结

java 的特性

简单性
面向对象
可移植性
高性能
分布式
动态性
多线程
安全性
健壮性
  • jdk包含了jre包含了jvm
  • jdk在jre之上扩增了开发 工具
  • jvm是java虚拟机
c语音编译型的
java是既编译又解释型的
源程序.java文件通过Java编译器形成.class文件
通过jvm虚拟机的类装载器到字节码校验器到解释器最后到操作系统
  • 单行注释 //
  • 多行注释 /* */
  • 文档注释 /** */
标识符
  • 关键字
Java中所有的组成部分都需要名字。类名变量名以及方法名都被称为标识符。

程序规范

类成员变量:首字母小写和驼峰原则:除了第一个单词以外,后面的单词首字母大写
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:runRun()

语言基础

数据类型(四类八种)
  • byte1,short2,int4,long8,float4,double8,char2,boolean 1
引用数据类型
  • 类 接口 数组(string)
修饰符
  • 没有顺序
访问修饰符
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
字符串
  • 字符串连接符号 +
//字符串在前面,后面拼接
System.out.println(""+a+b);
/字符串在后面,先运算后拼接
System.out.println(a+b+"");
  • 常量(final):常量存储的是在程序中不能被修改的固定值,也就是说程序运行的整个过程中保持其值不变的量。final int A = 20;
  • 变量:就是可以变化的量,JAVA变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
  • 局部变量:只在方法中。必须声明和初始化值,首字母小写和驼峰原则
  • 实例变量:在类中在方法外面,从属于对象,new类对象在方法中进行调用,从属于对象,如果不自行初始化,这个类型的默认值为0或0.0。布尔值为false,除了基本类型其他的的默认值都为null。
  • 类变量(static):也叫静态变量。从属于类中。随类一起开始,一起消失。在类中可以直接调用。

数据类型的转换

  • 隐形转换 (由小到大,小数的优先级大于整数)
  • 强制转换 (由大到小)
* //(类型) 变量名
* int i =128;
* byte b = (int)i;//注意内存溢出问题
* //不能对布尔值转换
* //不能把对象的类型转换为不相干的类型
* 在范围大到范围小转换为强制转换
* 注意内存溢出和精度问题

运算符

  • 计算的先后案例
public static void main (string[] args){
    int a =3;
int b =att;
int c =++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
a=5;b=3;c=5;
  • Math 是数学类
  • 三元运算符
//x?y:z
//如果x==true,则测试为y,否则为z
int score = 50;
String type = score<60 ?"不及格":及格
System.out.println(type);
不及格
//比较大小
int a=10;
int b=20;
int c=30;
//条件表达式?a:b 如果条件表达式为true则取a否则取b
int type = (a>b)?a:b ;
int max = (type>c)?type:c
System.out.println(max);
  • 逻辑运算符
  • 与 && 两个都为真结果为真
  • 或 || 两个有一个为真 结果为真
  • 非 ! 如果是真结果是假,如果是假结果为真

javados

  • 在黑窗口中 通过命令 javadoc 参数 Java 文件

java流程控制

  • 用键盘输入数据(scanner)
public static void main (string[] args){
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(sytem.in);
//判断用户有没有输入字符串
     //用next方法接收,next()不能得到带有空格的字符串
String str = scanner.next();
System.out.println("输入的内容为"+str)
//凡是使用IO流的类如果不关闭回一直占用资源
scanner.close();
 //nextLine()方法返回是输入回车之前的所有字符,可以获得空白 这个方法比较好,可以接受长字符串
}
  • 顺序结构

选择结构

分支结构

  • if条件语句
//单选结构
if(布尔表达式){
    如果为true则执行语句
如果为false跳过语句执行下一种语句
}
//双选结构
if(score>60){
    System.out.println("及格")
}else {
    System.out.println("不及格")
}
//多选择结构
if(60<score<70){
System.out.println("D");
    }else if(70<score<80){
    System.out.println("C");
    }else if(80<score<90){
    System.out.println("B");
 }else if(90<score<100){
    System.out.println("B");
}
  • switc多h选择语句
char grade ='c';

//匹配一个具体的值

switch(grade){
//case 穿透
case 'A':
     System.out.println("优秀");
break; //可选 关门
case 'B':
System.out.println("中等");
break; 
case 'C':
System.out.println("挂科");
break; 
//如果没有匹配到,则输出default
default:
System.out.println("没有成绩");
}

循环结构

  • while语句
while(布尔表达式){
    //只要为ture循环会一直走下去
    //死循环 为false 就结束
}
//do while循环(即使不满足布尔表达式,也能执行一次) 至少执行一次
do{
    //代码语句
}while(布尔表达式);
//while 总是先判断后执行
//dowhile总是先执行后判断
  • For循环
for(初始化;条件判断;更新){
    //代码语句0
}
  • 增强for循环
//主要用于数组和集合中的遍历使用
for(声明语句:表达式){
    //语句
}

//定义一个数组(用for循环遍历)
int [] numbers = {10,20,30,40,50}
for(int x : numbers){
    System.out.println(x);
}
循环中的三种跳转语句
  • break语句 (强制退出循环,循环结束,程序可以继续输出)
  • continue 语句(终止某次次循环,执行下一次是否循环的判定)
  • return 已经返回结果代表方法结束
方法
  • 方法是解决一类问题的步骤的有序组合
  • 方法含于类或对象中
  • 方法在程序中被创建,在其他地方被引用
修饰符 返回值类型 方法名(){
    ----
 方法体
 ---
return 返回值;
///return除了返回,还有终止方法的作用。
}
参数类型:参数像是一个占位符,当方法被调用时,传递值给参数,这个值被称为实参或者变量,参数列表是指方法的参数类型,顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
1.形式参数:在方法被调用时用于接收外界传入的数据
2实参:调用方法时实际传给方法的数据
方法调用
  • 调用方法:对象名.方法名(实参列表)当方法返回一个值的时候,方法调用通常被当做一个值
  • 如果返回值时void 方法调用一定是一条语句
方法的重载
*可以让程序清晰易读
*方法名称相同
*通过改变参数列表(个数不同,类型不同,参数排列顺序不同)
可变参数
//Java支持传递同类型的可变参数给一个方法
//在方法声明中,在指定参数类型后加一个省略号(...)
//一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数都必须在它之前证明。
public static void 

递归

  • 递归就是A方法自己调用自己
  • 但是占用大量的栈内存。
  • 能不能用就不用
//案列阶乘
package Demo;

public class Demo02 {
public static void main(String[] args) {
	System.out.println(f());
}
public  static int f (int n) {
//边界条件
	if(n==1) {
		return 1;
		//前阶段:调用自身
	}else {
	//返回阶段
	return n*f(n-1) ;
	}
}
}

数组

  • 数组的概念
数组是相同类型数据的有序集合
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
每一个数据成为一个数组元素,每个数组元素可以通过一个下标来访问他们。

*数组的声明

模板:dataType[] arrayRefVar = new dataType[arraySize];
int[] nums; //1.定义
nums = new int[10];//2.可以存10个数据(分配空间)
//3.给数组元素中赋值
nums[0]=1;
---
nums[8]=9;
nums[9]=10;
//计算所有元素的和
int sum =0;
//获取数组长度:arrays.length
  • 数组的使用
package Demo;

public class Demo03 {
public static void main(String[] args) {
	int [] arrays = {1,2,3,4,5};
	//没有下标 一般用于遍历结果
	for(int array : arrays){
		System.out.println(array);
	}
}
//打印数组元素 printArray

public static void printArray(int[] arrays) {
	 for(int i=0;i<arrays.length;i++) {
		 System.out.println("arrays[i]"+"");
	 }
}
}
  • 多维数组

  • Arrays类

int[] a = {1,2,3,4,5}
//打印数组元素 toString
System.out.println(Arrays.toString(a));

面向对象编程

  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
  • 面向对象与面向过程
//面向过程思想
步骤清晰简单,第一步,第二步
//面向对象
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
// 类:抽象的,实例化
// 类实例化后会返回一个自己的对象!
// student对象就是一个Student类的具体实例
Student student = new Student();

类与对象

  • 类与对象的区别
类:类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。
对象:对象是抽象概念的具体实例,能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。
从认识论角度考虑是先有对象后有类。对象,是具体的食物。类,是抽象的,是对对象的抽象。
从代码运行角度考虑是先有类后有对象。类是对象的模板。
构造器
//一个类即使什么也不写,也存在一个无参构造,一旦定义了有参构造,无参就必须显示定义
 //使用new关键字本质是调用构造器
//先走一遍Person类的构造器,再生成对象  
//用来初始化值
Person person = new Person();
//必须和类名相同,没有返回值
//实例化初始值用this. 
//有参构造
package Demo;

public class Demo04 {
   int age;
   String name;
public Demo04(int age,String name) {
this.age=age;
this.name=name;
}
public static void main(String[] args) {
   Demo04 d = new Demo04(19,"man");
   System.out.println(d.age);
}
}

创建对象内存分析
//创建一个对象
Pet dog = new Pet();
//main方法在栈内存中
//dog作为一个引用变量名在栈内存中
//具体的对象new Pet();在堆内存中
//static在堆里的特殊的静态方法区中、,随类一起加载,一起消失。
封装(该封的封,改装的装)
程序设计追求"高内聚低耦合",高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用
1,提高程序的安全性,保护数据
2,隐藏代码的实现细节
3,统一接口
4,程序的可维护性增加了
// 属性私有
//get 获得这个属性
//set 给这个数据设置值
继承
  • extends
  • object类
  • super
1.super调用父类的构造方法,必须在构造方法的第一个。
2.super必须只能出现在子类的方法或者构造方法中!
3.super和this不能同时调用构造方!
super与this不同点:
(1):代表的对象不同。
this:本身调用者这个对象。
super: 代表父类对象的引用。
(2):前提
this:没有继承也可以用
super:只能在继承条件才可以使用。
(3).构造方法
this(); 本类的构造
super(); 父类的构造!
  • 方法重写:就是方法的重写与属性无关
  • 什么要重写:父类的方法子类不一定需要,或者不一定满足!
//重写的是非静态方法
//方法的调用只和左边定义的数据类型有关
AextendsB
 父类的引用指向子类
 B b = new A();
 * 方法名必须相同
 * 参数列表必须相同
 * 修饰符范围可以扩大,但不能缩小
 *抛出的异常范围可以被缩小,不能扩大。
 * 返回值可以不同,但必须是父类的衍生。
  • 1.extends 的意思是"扩展“。子类是父类的扩展 。
  • 2.JAVA中类只有单继承,没有多继承!
    3.继承是类和类之间的一种关系。除此之外,类和类之间的关系还有以来,组合,聚合等。
多态

1.即同一个方法可以根据发送对象的不同而采用多种不同的行为方式

 注意事项;
 1.多态是方法的多态,属性没有多态。
 * 2.父类和子类,有联系,类型转换异常。
 3.存在条件,继承关系,方法需要重写。父类引用子类对象
 Father f = new Son();
 //static 方法属于类 不属于实例不能重写
 //final 常量不能重写
 //private 私有方法不能重写
  • instanceof 和类型转换。
Sys.out.println(X intanceof Y)//判断吗x和y是否有继承关系
Person obj = new Student();
//student将这个对象转换为Student类型,我们就可以使用Student类型的方法了!
Student student = (Student)obj;
student.go;//这时就可以调用子类的go方法。
//子类转换为父类,可能会丢失自己本来的一些方法!
1.父类引用子类的对象
2.把子类转换为父类,向上转型。
3.把父类转换为子类,向下转型,强制转换。
4.方便方法的调用,减少重复的代码。
static总结
 *随类一起加载,随类一起消亡
 *可以通过类名引用 类名.静态变量名
 *可以通过实例对象引用 对象名.静态变量名
 //static的方法只能访问static成员或者调用static成员方法,或者在静态方法中不能访问实例变量与实例方法
 //非静态方法,可以调用静态方法。
 类名.静态变量名();
 对象名.静态方法名();
抽象类
abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
抽象类,不能使用new关键字来创造对象,它是用来让子类继承的。
抽象方法:只有方法的声明,没有方法的实现,他是让子类来实现的。
子类继承抽象类:那么就必须要实现抽象 类没有实现的抽象方法,否则该类也要声明为抽象类。
  • 接口(定义 实现 引用 继承)
//接口只有规范 自己无法写方法。 
//定义
 interface 类名
 接口中的所有定义其实都是抽象的
//类可以实现接口 implements
 实现 接口的类 必须要重写接口中的方法。
 
  • 匿名内部类

  • 异常处理(捕获与抛出)

线程(5大)

*新建
*就绪
*运行
*阻塞
*消亡
*什么是进程 什么是线程
*泛型与容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值