01.JavaSe基础学习内容
初始Java
Java基础
内存
数据
变量
结构语句
条件
if
switch
循环
for
while
语句
break
continue
数组
嵌套循环
1.命令方式
1-打开DOS命令 win+R->键入cmd
2-基础DOS命令
进入f盘:
>f:
退回根目录
cd/
退回上一级目录
cd..
JVM:java虚拟机(虚构出来的计算机)
跨平台的异种语言
不同的系统安装不同的版本jvm
JRE:Java的运行环境
JDK:Java的开发工具
java源程序编写和html类似html->body
java源程序的框架
public class Hello{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
第一个指令:
向控制台输出Hello World
System.out.println"Hello World");
编写源程序注意事项
一.源程序中区分大小写的
二.HelloWorld文件名必须一致 不是文件夹名称
三.每个单词中间有空格
四.源程序文件名称命名规则
1.不能是中文
2.帕斯卡原则:所以单词的首字母必须全部是大写,列如:Hello World.java
3.数字不能开头
4.只能使用$和_
五.所有符号为英文状态下的符号
六.华括弧一一对应
七.System.out.println(" ");
输出指令
一个输出指令一个分号
八.System.out.print 输入后不换行 System.out.println 输入后换行
// 单行注释
无意义 (备注)
/* 内容 */ 多行注释
数据类型
int 整数 整形如一天二十四小时
double 非整形 如1.3 4.66
char 用于储存单个字符如a b c d 1 2 3 4 * 字符前后需要加单引号'
String 用于存储一串符号如 Hello Come *字符前后需要加双引号"
(内存中存储数据的最小单元:变量)
- //9 ——>int
// 声明变量:告诉内存我要在你这里开辟一块空间
- int.num;
数据类型.变量名称 赋值:将数据存储在变量中 将声明变量和赋值合并 int num1=89;
- num=9;
数据存储成功
- System.out.print(9);括号内不加"
取出数据进行相加运算
- System.out.print(num1+9);
* +是连接符号 连接(a+b)
变量名命名规则
1.驼峰规则:第一个单词字母小写 其余单词字母大写 如:myNum
2.不能数字开头
3.只能使用$ _
4.不能使用关键字(关键字:底层人员写的 如:out println)
变量使用注意事项
1.必须声明并赋予数值
2.变量名称不能相同
运算符
1.赋值运算符: =
2.算数运算符: + - * / %(余数)
3.比较运算符: > < ==(两个等于号)>=(大于等于) <=(小于等于) !=(不等)
4.逻辑运算符:&&(与) || (或) !(非)
替换赋值
int wangScore=98;
wangScore=78;
int wangScore=98
int zhangScore;
将小王里面的数据取出后赋值给小张
赋值:将等于号右侧的值 赋值给 等于号左侧变量名
zhangScore=wangScore;
先算乘除 后算加减 计算机中 除不净 没有四舍五入概念 只保留整数部分
接受键盘上输入的三个整数,计算三个整数的平均值,输入
import java.util.Scanner;
引入接受键盘的工具
* 此命令放置在文件的开始
调用键盘工具
Scanner scan=new Scanner(System.in);
提示用户要输入的值
Scanner scan=new Scanner("请输出一个整数");
接受键盘上输入的整数值 储存在num里
int num=scan.nextInt();
使用变量中的值
System.out.print("键盘输入的值是:"+num);
nextDouble:接收键盘上输入小数值 next:接收键盘上输入的字符串 nextInt接收键盘上输入的整数值
自增运算
num++ 和num+1 同理 num+=2不设置默认是加1
num++先使用 后+1赋值 ++num先+1赋值 再使用
自减运算
num-- 和num-1 同理 num-=2不设置默认是减1
自动类型转换规则
1.如果一个操作输为double型 则整个表达式可提升为double型
结构语句
1.顺序结构
2.选择结构(if-else 复杂条件 嵌套条件 多重if(if-else if) 等值)
3.循环结构 (1.do-while 2.while 3.for 4.break/contine 5.嵌套 for)第一 二不知循环次数
实际开发中文件夹命名规则
com.qrjy.demo1
com.qrjy.demo2
公司缩写 项目 此文件的具体的功能
jp.
cn.
kr.
注意:1.尽量用一个英文单词来概括
2.“.”不能开头也不能结束
workspace 下看你创建的项目
src:source 放置的源代码
bin:binary 放置的是编译后计算机识别的二进制语言
条件表达式
if(条件表达式){
加表达式成立后展示的内容
}
if(javaScore>90){
System.out.println("老师奖励一个MP4");
}else{
System.out.println("老师将会惩罚");
}
System.out.println("程序结束");
}
字符串比较使用
sex=="女" 错误
sex.equals("女") 正确
(!sex.equals("女")) 不是女
使用swith来完成等值判断
switch(mingCi){//放置的是变量名即可
case 1:
System.out.print("恭喜您获得了一台电脑");
break;//跳出
case 2:
System.out.print("恭喜您获得了一台平板");
break;
case 3:
System.out.print("恭喜您获得了一台手机");
break;
default:
System.out.print("抱歉没有获得奖励"); -------------------->默认跳出,前几种情况没有符合的条件,则进入default输入.必须放在最后执行
break;
}
char select="a"
switch(char){
case "a":
System.out.print("恭喜您获得了一台电脑");
break;
case "b":
System.out.print("恭喜您获得了一台平板");
break;
default:
System.out.print("抱歉没有获得奖励");
break;
}
(快速格式化代码,选中代码---右击---source---format element)
(快捷键修改方式:windows---preference---keys 搜索 想要改的键位)
System.out.print("请输入日期");
string day=scan.next();
不能接受char
int a=9
变量 常量
变量:a 常量:9
编写代码的过程中
1.编译错误,eclipse会提醒你的错误
2.运行错误,异常,ImputMismatchException。
if(scan.hasNextInt()){
int num=scan.nextInt(); ----------此方法的功能是:判断键盘上输入的是否符合要求 如果不符合就返回false 如果符合则返回true boolean flag=scan.hasNextInt
System.out.print("结果是:"+(num*9));
}else{
System.out.print("您输入错误");
}
循环
switch(num){
case 1:
case 2:
case 3:
case 4:
break;
case 5:
case 6:
break;
}
int i=1;
while(i<=10000){
System.out.println("第"+i+"遍写,好好学习,天天向上!");
i++;
}
*特点先判断,再执行,在条件不满足的时候才跳出
while(循环条件){
循环操作
}
1.while:先判断再执行------循环次数0-n
while( ){
}
2.do-while 先执行再判断-------循环次数1-n
do{
}while( )
3.for循环
for(int i=0;i<100;i++){
System.out.println("好好学习,天天向上!");
}
**********************************debug(调试)***********************************
| eclipse-->debug |
| 1.定义断点:让程序停在这里. |
| 在左侧相应行号内双击打上断点. |
| 2.点击debug开始调试程序 |
| 程序将在断点的位置停止. 代码处出现绿色候选框 |
| 3.让程序员自己手动一步一步向下走 |
| 可以方便我们自己观察整体的执行步骤 |
| 使用step over快捷键(Fn+F6) 向下走 |
| 调试时要时时观察3个界面 |
| *第一个代码窗口的绿色条框变化范围。 |
| *看variables窗口显示了变量的变化范围。 |
| *看console控制台输出的内容是否正确。 |
| 4.如果调试完成或者重新调试 |
| 则点击console的红色方块按钮 |
| 调试完成则取消断点 |
| 总是点击Java perspective试图回到编辑代码页面 |
********************************************************************************
break语句
在循环语句中必须配合着条件语句使用
用于循环语句 可跳出循环而执行循环后面的语句 跳出整个语句
循环内break下面的语句也不执行
continue语法
跳出本次循环 执行下一次循环
*for循环
外层循环控制行数 内层循环控制内容个数
*数组*
数组基本要素
1.标识符:数组的名称,用于区分不用的数组
2.数组元素:向数组中村风的数据
3.元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
4.元素类型:数组元素的数据类型
第一种:int a[]=new int[5];
第二种:int a[]={1,2,3,4,5};
第三种:int a[]=new int[](1,2,3,4,5);
Arrays.sort(a);
数据计算方法 如:比较大小,排序大小等
*面向对象*
1.程序设计
1.面向过程 C语言 Basic语言
--》1.打开冰箱
--》2.储存大象
--》3.关闭冰箱
2.面向对象 Java C++ C#
--》1.冰箱打开了
--》2.冰箱储存大象
--》3.冰箱关闭
*使用Java语言的面向对象的特点解决我们生活中遇到的问题。
类 对象 属性 方法
1. 对象:具体存在的一个实体。
2. 对象由属性(事物的特征)和方法(实物的能力)组成。
1.类:从对象中抽象出 *类*
*抽象:抽出相似的特征
2.类是泛指的,根据多个具体对象抽出的共同特征。
3.类就是对象的类型
1.类是一个模子,类里面定义对象将会拥有的特征(属性)和操作(方法)------泛指
2.对象是一个能够看得见摸得着的具体实物----------------------------------实体
4.Java语言来描述类和对象之间的关系
Java程序都是以类为单元。
**具体步骤**
定义类
定义属性(变量)
定义方法 public void 方法名(){
Sys out ("内容");
}
创建对象
类定义完成之后,根据类得到每一个具体的对象。
类名 对象名=new 类名();
为对象赋予灵魂
为对象去赋具体的属性
对象名.name="小红";
对象名.score="90";
1.类中方法
无参方法
有参方法
返回值方法
无返回值方法
2. ************************************************
-1.在自定义的类中定义方法--》方法的返回值类型 方法的名称(方法的参数){ 方法的主体 }; * poblic void run ( ) { } *
-2.方法的返回值类型--方法的名称--方法的主体 * 修饰符 无返回值类型 方法名 参数 方法体 *
3.方法的返回值 ************************************************
viod(不带返回值)
基本数据类型(带返回值)
int double boolen
引用数据类型(带返回值)
String Student(数组)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
* public 返回值类型 返回值名称(){ *
* //... *
* return 返回值; *
* } *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
**带返回值的方法定义在自定义的类中
**在执行类中调用此方法,方法会反馈给我一个值
*注意:
1.定义方法是返回值的类型必须和定义方法的返回值类型相同
2.方法之间可以相互调用(本类中不同的方法之间可以直接调用; b() 不用类中方法之间调用,则必须先实例化再调用;A()a=new A() )
3.一个方法只能返回一个值。
4.return方法下面不能放任何代码。
5.类只有方法和属性组成。
普通变量没有确定赋值则一定会出现未被初始化的错误
类或者数组在内存中使用new创建空间的时候,会赋一种默认的值(0,0.0,false,null)
定义方法--》调用方法
*无参无返回值方法
方法命名规则:和变量一样
public void a(){ }
*无参有返回值方法
public int b(){
return (8+9)/3;
}
注意:1.形参:定义类的时候() publi void a(形参列表){ } ;
2.实参:调用方法的时候() publi void a(实参列表){ } ;
3.形参和实参必须保持一致(类型,个数,顺序):
4.如果定义方法带返回值,那么要进行返回值处理;
*********************************************************************************
*在类中定义的变量 是成员变量 建议全部写在类开始的地方 *
*在方法中定义的变量 或者是方法的参数 是局部变量 当方法执行结束后则变量会被回收 *
*********************************************************************************
1.成员变量和局部变量位置不一样
2.初始值
成员变量有默认初始化值
局部变量没有默认值,必须初始化之后才能使用变量
3.生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法执行完毕而消失
4.在内存中位置不同(内存管理和垃圾回收)
成员变量:在堆中
局部变量:在栈中
*注意
同一个方法中,不允许有同名的局部变量,在不同方法中可有
同一个类中,成员变量和局部变量可以重名,
作用域(变量的作用范围)
**powerDesign 类图 生成器**
字符串的方法
String a="我爱中国";
String str=new String("我爱中国");
*String类位于java.lang.String类中
*学习方法时注意:方法的返回值和方法的参数
*数组长度是arr.length 成员变量
*字符串长度是str.length() 成员方法
equals 判断的是内容
== 判断的是地址
*compareTo 字符串依次比较
*format 类名.format
字典顺序:
符号在数字前面,数字在字母前面,大写字母在小写字母前面,
StringBuffer 对字符频繁增删改,跟String一样都能存储字符串,处理字符串。
StringBuffer 对象名=new StringBuffer("字符串");
方法名相同参数不相同 叫方法重载
对象名.toSrting(); 转化为String类型
对象名.append("**");追加字符串
对象名.insert(1,"**");插入字符串
修改结果会自动储存在StringBuffer中
特殊方法的第一种
构造方法:实例化--》创建对象的 并且为对象赋属性值
Constructor语法:
public 类名(){ }
创建类的时候都会有一个隐藏的无参构造方法
创建对象的时候都会调用此构造方法
构造方法由于方法名称相同 因此构造方法的参数定义时注意 不要两个构造方法的传递参数一致(顺序 个数 类型)
当你在类中定义了有参构造方法,隐藏的无参构造方法失效 因此必须在类中显示定义构造的方法
*总结String方法
int length(); 获取字符串的长度
char charAt(int index);获取某个位置上的字符
int indexOf(int ch); 返回值是ch在字符串中第一次出现的位置
(int ch,int fromindex)从fromindex指定位置开始,ch在字符串中出现的位置
(String str)返回的是str在字符串第一次出现的位置
(String str,int fromindex)从fromindex指定位置开始,str在字符串中出现的位置
boolean contains(sir);字符串中是否包含sir字符
boolean isEmpty();字符中是否有内容
boolean startsWith(sir)是否以指定内容开始
boolean endsWith(sir)是否以指定内容结尾
static String valueOf(int) 基本数据类型转换成字符串
static String valueOf(double)基本数据类型转换成字符串
int compareTo(string)对两个字符串进行自然顺序比较
to String()转化为String类型
append() 追加字符串
intsert () 插入字符串
String Buffer 对字符频繁修改使用
public int counter(String inputs,String word)统计字符串出现次数的方法
public String substring(int beginindex,int endindex)提取从beginindex到endindex之间的字符部分
面向对象的高级:优化程序设计
1. 封装(带返回值)
-1.概念 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
-2.语法 private int num;
3步骤
1.隐藏成员变量 修改可见性 将成员变量前面加上private 结果:其他类在创建对象的时候,在调用成员变量时显示错误
2.创建共有的getter/setter方法 在此类当中创建共有方法 public void setName(String Name){Name=Name1} 调用方法时候name.setname("想加入的内容");
3.在setter/getter中添加属性限制
**注意:
1.方法名称必须是set开头 首字母大写
2.方法的返回值必须是成员变量的类型(返回的是成员变量里面的值)
3.在本类中调用自己的成员变量和成员方法的时候 使用this this代表当前对象
2. 继承 一个类(子类)继承及另一个类(父类) 好处是减少冗余代码 缺点是单继承 一个子类 只能有一个父类
-1.概念 super是代表父类 this代表的是本类
-2.语法 extends
重载 是继承 子类继承父类 发生在一个类中 方法的名称相同 参数的列表必须不相同(类型 个数 顺序) 返回值的类型和访问修饰符任意
final(修饰符)
static(main方法中,类中)
重写 是子类继承父类时 不想全部继承 或者是添加方法 这种情况叫重写 方法名字相同 参数列表必须相同 返回值的类型相同或者是其子类
访问修饰符严于父类(父类是protected 子类是protected ,public)
java中 用abstract 限制class后面的单词变成抽象类 无法实例化
也可以修饰方法 方法为抽象方法 抽象方法没有方法体
父类中编写抽象方法 子类必须重写
抽象类中可以有普通方法也可以有抽象方法
抽象方法必须在抽象类中
初始化是先初始父类属性--父类方法--子类属性--子类方法
final关键字
修饰类
修饰方法
修饰变量 变量名必须全部大写
Object 祖宗类
Object是所有类的父类 如果一个类没有使用extends关键字表示继承另一个类,那么这个类默认继承Object,
equals:比较对象的引用是否指向同一块内存地址(引用:是否指向一块内存地址)
toString()返回的值是哈希码值(把长度不固定的值 返回成固定的值)(对象地址字符串)
3. 多态
-1.概念 一种事物的多种表现方式
-2.语法 Father fa=new Son(); ----使用多态实例化
Son son=new son();
4.接口:代表能力,代表的是一种约定
implement interface
Java语言减少使用面向对象开发出来的。
Date 电脑系统时间
Calendar 日历
Math 数学
包装类 Integer Double Short Float Boolean
集合(不同结构不同使用)
异常(Exception)
文件(内存在基本数据类型的变量中,引用数据类型中的变量中引用)IO流
写入
内存---------》文件
《---------
读取
栈 普通的成员变量 main方法中定义的局部变量
堆 new之后的对象
常量池 存储字符串的常量
静态存储区 使用static修饰的成员变量