java基础
简介
java参考书:Java编程思想,Java核心技术卷1,effect Java
JavaSE:标准版(桌面程序,控制台开发……)
JavaME:嵌入式开发(手机,小家电…)
JavaEE :企业级开发(web端,服务器开发…)
JDK:包含{
JRE:包含:(JVM)}
先编译,再解释
文件名同类名,首字母大写
IDEA: src/javaclass
基本语法
注释
单行注释//123//
/*多行注释*/
标识符
大小写敏感
println:输出完会换行
String 变量 = "niu";
//变量名只能A a $ _ 开头,后面可A a $ _ 数字//
数据类型
1.基本数据类型
byte,short,int,long //long要在数字后加L
float,double //float后面加F
char//一个字符
String//字符串
boolean//true or false 默认false
2.引用数据类型
类,接口,数组
进制:进制
二进制0b//0b10=2
十进制
八进制0
十六进制0x
强制转换:高->低 (数据类型)数据
转义字符/n换行…
变量
1.类变量:static定义,首字母小写+驼峰原则
2.实例变量:类内有效, 不赋值则默认值
system.out.println(demo88.age); //方法内引用时:类名.变量名
3.局部变量:{方法内有效,必须声明且赋值}
常量:final 常量名= 值;//常量名大写,类命首字母大写+驼峰原则
运算符
double pow = Math.pow(3,2);//幂运算
//字符串连接符+ ,String
System.out.println(""+a+b);
System.out. println(a+b+""); //注意结果的差异
//x ? y : z
//如果x==true 则x=y,否则x=z
包机制
就是文件夹
一般利用公司域名倒置作为包名
如果文件在包内,则第一行有 package 包名;
package com.haha.java; //此文件类在该包中
/星号:导入这个包下所有的类!
import com.kuang.base.*;
javaDoc
/**
参数信息
@author作者名
@version版本号
@since指明需要最早使用的jdk版本
@param参数名
@return返回值情况
@throws异常抛出情况
/**
*@param name
*@return
*@throws Exceptior
*/
public string test(String name) throws Exception{ //throws Exception:抛出异常
return name;
}
}
使用IDEA生成JavaDoc文件
补充:JAR文件:打包后的程序文件,归档文件
流程控制
Scanner
import java.util.Scanner;
Scanner s = new Scanner(System.in);
scanner.close() ; //最后要关闭
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next()不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
hasNext()
判断下一个接受的数据 hasNextInt():判断下一个输入是否为int型```
//equals:判断字符串是否相等
if (s.equals( "Hel1o"))
switch(){
case'':
break;/如果没有break,则会把下面的case也输出
}
方法
一个方法做一个功能
调用方法 :类名.方法名();(静态方法,static定义的)
if:非静态方法:调用需先实例化new,:对象类型 对象名 = new 对象值();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AuA8OdW0-1619661429038)(C:\Users\a\AppData\Roaming\Typora\typora-user-images\image-20210422142309872.png)]
方法重载:方法名,内容相同;返回值,参数类型不同
可变参数:在方法声明中,在指定参数类型后加一个省略号(.…),一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。
任何普通的参数必须在它之前声明。
数组
int[] nums; //声明数组
nums = new int[10];//创建数组 or int[] nums = new int[10]
nums[0] = 1;
nums[9] = 10; //赋值,区间:0~lenth-1
for (int array : arrays) {
system.out.println(array);} //使用:for-each
Arrays类
冒泡排序
稀疏数组
java内存
1.堆(创建数组)
2.栈(声明数组)
3.方法区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhX4s0V5-1619661429045)(C:\Users\a\AppData\Roaming\Typora\typora-user-images\image-20210421144140315.png)]
面向对象
以类的方式组织代码,以对象的组织(封装)数据。
/* 方法的定义
修饰符 返回值 类型
方法名(...) {
//方法体
return返回值;
}
*/
public String sayHello(参数类型,参数名){ //String是返回值的类型
return "hello,world";
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAM5rxq9-1619661429049)(C:\Users\a\AppData\Roaming\Typora\typora-user-images\image-20210422153205798.png)]
类—>对象 对象的属性,对象的方法
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。开且构造器有以下两个特点:
1.必须和类的名字相同
2.必须没有返回类型,也不能写void
构造器的作用:
1.使用new关键字,必须要有构造器。
2.构造器用来给对象的参数初始化值
alt+insert 生成构造器
public 对象名(参数1,参数2...){给变量赋值}
有参构造:一旦定义了有参构造,无参就必须显示定义。
封装
高内聚,低耦合。
属性私有:private,外界不能操作,只能通过方法调用。
get/set :提供一些可以操作这个属性的方法
//get获得这个数据
public string getName(){
return this.name;
}
//set给这个数据设置值
publie void setName(string name){
this.name = name;
}
// alt+insert :自动生成
继承
publie class Teacher extends Person{} //extends 继承
1.类与类之间的关系 ,只有单继承。可以间接继承
2.子类继承父类,就会有父类的全部的public方法,private的不能用。
父类属性一般用private私有,然后子类通过调用方法使用该属性(set,get)
所有的类都默认继承object类。快捷调用:crtl+H ·············
调用
1.子类调用:this.name();//调自己
super.name() //调父类,只能出行在子类。
2.调用父类的构造器,必须要在子类构造器的第一行(super和this不能共存)
重写
子类重写父类的方法,参数列表必须相同。
与非静态方法有关。
修饰符:范围可以扩大。
抛出异常:范围可以缩小,不能扩大。
父类引用可以指向子类
多态
1.方法的多态
2.父类和子类有联系,类型统一。类型转换异常:ClassCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类。
ex: Father f 1 =new Son( ); //static final private 不能
instanceof:判断是否能转换,x与y是否有父子关系
System.out.println(x instanceof y);
方法,参数列表必须相同。
与非静态方法有关。
修饰符:范围可以扩大。
抛出异常:范围可以缩小,不能扩大。
父类引用可以指向子类
多态
1.方法的多态
2.父类和子类有联系,类型统一。类型转换异常:ClassCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类。
ex: Father f 1 =new Son( ); //static final private 不能
instanceof:判断是否能转换,x与y是否有父子关系
System.out.println(x instanceof y);