1.安装jdk和IDEA
2.创建自己的第一个项目
3.编写自己的第一段代码
package com.Gu0f3n;
public class test01 { public static void main(String[] args) { System.out.println("hello.world" ); } }
|
注释
单行注释 / /
多行注释/**/
package com.Gu0f3n;
public class test01 { public static void main(String[] args) { System.out.println("hello,world"); System.out.println("hello,world"); System.out.println("hello,world"); System.out.println("hello,world");
} }
|
常用快捷键: main方法快捷键:psvm+回车 控制台原样输出:sout+回车 删除一行:ctrl+y 复制—行:ctrl+d
|
变量
变量的含义
变量本质上就是代表一个”可操作的存储空间”,空间位置是确定
的,但是里面放置什么值不确定。我们可通过变量名来访问“对应
的存储空间”,从而操纵这个“存储空间”存储的值。Java是一种
强类型语言,每个变量都必须声明其数据类型。变量的数据类型决
定了变量占据存储空间的大小。
变量的学习
步骤1:变量的声明 type varName [=value][,varName[=value]...]; 注意:变量不可以重复定义 步骤2:变量的赋值 注意:变量的声明和赋值可以在同一行表示 步骤3:变量的使用
|
public class TESTvar { public static void main(String[] args) { String name; int a,b; name="Gu0f3n"; int age; age=18; age=32; age=40+18; int age1=19; int c =10; int e,f =30; System.out.println(age); int g=20; System.out.println(age+g); } }
|
数据类型
数据类型的分类
Java是一种强类型语言,每个变量都必须声明其数据类型
Java的数据类型可分为两大类:基本数据类型(primitivedata
type)和弓l用数据类型(reference data type)

public class TESTtype { public static void main(String[] args) { byte a =10; short b =22000; int c =30123131; long d =401215151513131513L; float e =3.14f; double f =4.56789; char g ='a'; System.out.println("Gu0f3n"); boolean flag =true;
} }
|
运算符

public class TESTope { public static void main(String[] args) { System.out.println(+10); System.out.println(5+6); int num =10; System.out.println("输出一个数"+num); System.out.println("abc"+5+6); int a =85; a++; int b=85; ++b; System.out.println(a); System.out.println(b); a=5; int m = a++ + 7; System.out.println(a); System.out.println(m); a=5; int n = ++a + 7; System.out.println(a); System.out.println(n); } }
|
public class TESTOPe2 { public static void main(String[] args) { int num1 =10; int num2 =20; int num3 =10+30; int sum =0; sum+=num1; sum+=num2; sum+=num3; System.out.println("和:"+sum); } } #和:70
|
public class TESTope3 { public static void main(String[] args) { System.out.println(5==6); System.out.println(5==5); System.out.println(false&&true); System.out.println(true&&true); System.out.println(false&&false); System.out.println(true&&false); System.out.println(false||true); System.out.println(true||true); System.out.println(false||false); System.out.println(true||false);
} } 控制台结果: false true false true false false true true false true
|
流程控制
作用:流程控制语句是用来控制程序中各语句执行顺序的语 句,可以把语句组合成能完成一定功能的小逻辑模块
|
分类

分支结构
if单分支

package com.Gu0f3n.test02;
public class TESTif01 { public static void main(String[] args) { int num =13; if(num >10){ System.out.println("这个数字大于10"); } } }
|
if双分支

package com.Gu0f3n.test02;
public class TESTif02 { public static void main(String[] args) { int num =8; if(num >10) { System.out.println("这个数字大于10"); }else{ System.out.println("这个数小于等于10"); } } }
|
if多分支

package com.Gu0f3n.test02;
public class TESTif03 { public static void main(String[] args) { int score =84;
if (score >= 90) { System.out.println("该学生的等级为A"); }else if (score >= 80) { System.out.println("该学生的等级为B"); }else if (score >= 70) { System.out.println("该学生的等级为C"); }else if (score >= 60) { System.out.println("该学生的等级为D"); }else{ System.out.println("该学生的等级为E"); } } }
|
循环结构
while循环
int num =1; int sum =0; while (num<=5) { sum = sum + num; num++; }
|
num<=5->true,sum:1,num:2->第一次循环结束
num<=5->true,sum:3,num:3->第二次循环结束
num<=5->true,sum:6,num:4->第三次循环结束
num<=5->true,sum:10,num:5->第四次循环结束
num<=5->true,sum:15;num:6->第五次循环结束
m<=5->false->循环停止
for循环
int sum =0; for(int num=1;num<=5;num++) { sum = sum + num; } System.out.println("和为"+sum );
|
方法和方法重载
方法
就是一段用来完成特定功能的代码片段
例如psvm,sout
方法声明格式 修饰符1修饰符2]返回值类型方法名(形式对象名.方法名(实参列表) 方法调用方式 方法名(实参列表)(参数列表)
|
package test04;
public class TESTmethod { public static int addNum(int num1 ,int num2){
int sum=num1+num2; return sum; }
public static void main(String[] args) { int a=addNum(10,20); System.out.println(a); int b = addNum(30,20); System.out.println(b); addNum(40,8186); System.out.println(addNum(40,8186)); } } 打印结果: 30 50 8226
|
方法的重载: 在同一个类中,方法名相同,形参列表不同的多个方法,构成了方法的重载。
|
方法名重复 但形参列表不一样//方法 的重载只和形参列表有关
数组
数组是相同类型数据的有序集合。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。
特点
1.长度是确定的数组一旦被创建它的大小就是不可以改变的。
2.其元素的类型必须是相同类型,不允许出现混合类型
3.数组类型可以是任何数据类型,,包括基本类型和引用类型。
4.数组有索引的:索索引l从0开始,到数组.length-1结束
package test03;
public class TESTArray { public static void main(String[] args) { int[] ary; ary = new int[10]; ary[0] = 1; ary[1] = 2; ary[2] = 31; ary[3] = 365; ary[4] = 456; System.out.println(ary[3]); System.out.println(ary[1]+30); for(int i =0;i <=3;i++){ System.out.println("第"+ i +"个元素"+ary[i]); System.out.println("增强的for循环"); for(int num:ary){ System.out.println(num); } } } }
|
面向对象 —类和对象
类:对对象向上抽取出像的部分、公共的部分以此形成类,类就相当于一个模版。
对象:模版下具体的产物可以理解为具体对象,对象就是一个一个具体的实例,就
相当于这个模版下具体的产品。
Java中先定义类,再创建对象。
类的编写
1.给类起一个见名知意的名字,首字母大写,驼峰命名原则。
2.类的特性编写,特性即类的属性部分。
3.类的行为编写,行为即类的方法部分。
对象的创建和使用
创建格式:类名对象名=new类名();
给对象的属性赋值:对象名.属性名=值;
调用对象的方法:[返回值类型名字=]对象名.方法名(参数列表);
对象的创建
package test05;
public class person { String name; int age; double height; public void study(){ System.out.println("伞兵一号卢本伟准备就绪"); } }
|
使用
package test05;
public class test { public static void main(String[] args) { person p1 = new person(); p1.name = "Gu0f3n"; p1.age = 20; p1.height=181.99; System.out.println(p1.age); System.out.println(p1.height); } }
|
构造器
作用
对于一个类来说,一般有三种常见的成员:属性、方法、构造器。
这三种成员都可以定义零个或多个。
构造方法也叫构造器,是一个创建对象时被自动调用的特殊方法,用于对象的初始化。
Java通过new关键字来调用构造器,从而返回该类的实例。
构造器声明类型
声明格式:
若无参数列表,称之为无参构造器(空构造器)
若有参数列表,称之为有参构造器
封装
我们程序设计追求“高内聚,低耦合”。
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
低耦合:仅对外暴露少量的方法用于使用。
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系
统的可扩展性、可维护性,提高程序的安全性。通俗的说,把该隐藏的隐藏起
来,该暴露的暴露出来。这就是封装性的设计思想。
继承
类是对对象的抽象
继承是对类的抽象
随便写点代码练习一下
父类person
package Gu0f3n.java.test02;
public class person { int age; double height; String name;
public double getHeight() { return height; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public void setHeight(double height) { this.height = height; }
public String getName() { return name; }
public void setName(String name) { this.name = name; } public void eat(){ System.out.println("eat");
} public void sleep(){ System.out.println("sleep");
} public void dadoudou(){ System.out.println("打豆豆哦"); } }
|
package Gu0f3n.java.test02;
public class students extends person{ private int sno;
public int getSno() { return sno; }
public void setSno(int sno) { this.sno = sno; } public void study(){ System.out.println("study"); } }
|
package Gu0f3n.java.test02;
public class Test { public static void main(String[] args) { students s = new students(); s.setSno(24710245); s.age=18; s.height=181.6; s.name="xiaobia"; s.eat(); s.study(); s.dadoudou();
} }
#eat #study #打豆豆哦
|
好处:
1.提高 代码的复用性
2.便于代码的扩展
3.为了多态的使用
|
方法的重写
发生在子类和父类,当子类对父类的提供的方法不满意的时候,要对父类方法进行重写
格式要求
子类的方法名字和父类必须一直,参数列表(个数,类型,顺序)
与重载的区别
重载:在同一个类中,当方法名相同,形参列表不同的时候,多个方法构成重载
重写:不同类中,子类对父类的提供方法不满意,可对父类进行重写
多态
概念
多种状态,具体一点基于是去完成某个行为,当不同对象去完成时会产生出不同的状态。同意行为,不同的子类呈现的状态不同 ps:多态与属性无关,多态指的方法的多态,而不是属性
|
多态的三要素:继承,重写,父类引用指向子类对象
多态的好处:提高代码的扩展性
异常的处理
异常就是在程序中的运行过程中所发生的不正常的时间,他会中断正在运行的程序
所需文件找不到
网络连接不通或中断
算术运算错 (被零除..)
数组下标越界
装载一个不存在的类或者对null对象操作
类型转换异常
Java提供异常处理机制。它将异常处理代码和和业务代码分离,使程序更优雅,更好的
容错性,高键壮性。
Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws
try-catch执行情况 情况1:try块中代码没有出现异常 不执行catch块代码,执行catch块后边的代码 情况2:try块中代码出现异常,catch中异常类型匹配(相同或者父类) Java会生成相应的异常对象,Java系统寻找匹配的catch块,执行catch块代码,执行 catch块后边的代码。try块中尚未执行的语句不会执行。 情况3:try块中代码出现异常,catch中异常类型不匹配 不执行catch块代码,不执行catch块后边的代码,程序会中断运行 catch块中如何处理异常 其中一种方式:自定义内容输出
|
package Gu0f3n.java.test06;
public class Test01 { public static void main(String[] args) { try{ int num1=12; int num2=0; System.out.println("两个数的商"+num1/num2); }catch(Exception e){ System.out.println("对不起,程序有问题"); } } } #对不起,程序有问题
|
throw和throws的区别:
(1)位置不同:
throw:方法内部
throws:方法的签名处,方法的声明处
(2)内容不同:
throw+异常对象D
throws+异常的类型
(3)作用不同:
throw:异常出现的源头,制造异常。
throws:在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异
常。然后调用者对这个异常进行处理:要么自己处理要么再继续向外抛出异常。
集合
数组的缺点 –.> 集合的优点
(1)数组一旦指定了长度,那么长度就被确定了,不可以更改。
(2)删除,增加元素效率低。
(3)数组中实际元素的数量是没有办法获取的,没有提供对应的方法或者属性来获取
(4)对于无序的,不可重复的场合数组不能满足要求。
集合体系非常庞大
ArrayList()
package Gu0f3n.java.test07;
import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;
import java.util.ArrayList;
public class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); System.out.println(list); list.set(0, "D"); System.out.println(list); list.get(2); System.out.println(list.get(2)); list.remove(2); System.out.println(list); } }
|
简单写个小项目
写个小菜单
package Gu0f3n.java.test08;
import java.sql.SQLOutput; import java.util.ArrayList; import java.util.Scanner;
public class Test { public static void main(String[] args) { ArrayList list=new ArrayList();
while(true){ System.out.println("请选择你要的操作"); System.out.println("-----1.展示女嘉宾-----"); System.out.println("-----2.上场女嘉宾-----"); System.out.println("-----3.下场女嘉宾-----"); System.out.println("-----4.退出本项目-----"); Scanner sc = new Scanner(System.in); System.out.println("请输入要执行功能的序号:"); sc.nextInt(); int choice = sc.nextInt(); if(choice == 1) { System.out.println("1.展示女嘉宾"); for(int i=0;i<=list.size()-1;i++){ Girl g=(Girl)(list.get(i)); System.out.println(g.getGnum()+"---"+g.getGname()+"---"+g.getGage()); } }
if (choice == 2) { System.out.println("2.上场女嘉宾"); System.out.println("请为女嘉宾输入编号"); int gnum; gnum = sc.nextInt(); System.out.println("请输入女嘉宾的名字"); String gname=sc.next(); System.out.println("请输入女嘉宾的年龄"); int gage=sc.nextInt(); Girl g=new Girl(gnum,gname,gage); g.setGnum(gnum); g.setGname(gname); g.setGage(gage);
list.add(g);
}
if (choice == 3) { System.out.println("3.下场女嘉宾"); int delNo = sc.nextInt(); for(int i=0;i<=list.size()-1;i++){ Girl g=(Girl)list.get(i); if(g.getGnum()==delNo){ list.remove(g); System.out.println("可惜不是你,陪我到最后~~~"); break; } } }
if (choice == 4) { System.out.println("4.退出"); break; } } } }
|
package Gu0f3n.java.test08;
import Gu0f3n.java.test05.Gire;
public class Girl { private int gnum; private String gname; private int gage;
public String getGname() { return gname; }
public void setGname(String gname) { this.gname = gname; }
public int getGnum() { return gnum;
}
public void setGnum(int gnum) { this.gnum = gnum; }
public int getGage() { return gage; }
public void setGage(int gage) { this.gage = gage; } public Girl(int gnum, String gname, int gage) { this.gnum = gnum; this.gname = gname; this.gage = gage;
} }
|
这上面基本上覆盖了之前学过的所有内容
I/O流
File 类作用
File类对象可封装要操作的文件,可通过File类的对象对文件进行操作,如查看文 件的大小、判断文件是否隐藏、判断文件是否可读等。 局限:File类的相关操作,并不涉及文件内容相关的操作,这是单独依靠File类对 象无法实现的操作,此时需要借助I/O流完成。
|

I/O input/output
分类
将I/O流理解为“管子”,那么生活中“管子"怎么分类的呢?分类方式如下所示。 方式1:按照方向划分。 输入流、输出流。 方式2:按照处理单元划分。 字节流、字符流。 方式3:按照功能划分。 节点流、处理流
|
i/o流体系

练习
package Gu0f3n.java.test09; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException;
public class Test01 { public static void main(String[] args) throws IOException { File f= new File("D:\\CTF\\Audacity\\java project\\java study\\src\\Gu0f3n\\java\\test.txt"); FileReader fr = new FileReader(f);
int n=fr.read(); while(n!=-1){ System.out.println(n); n=fr.read(); } fr.close();
} }
|