JavaSE

IDEA设置

https://www.bilibili.com/video/BV1Kb411W75N?p=412&spm_id_from=pageDriver

JDK、JRE、JVM

JDK : Java开发者工具,包含JRE
JRE : Java运行时环境,包含JVM
JVM : Java虚拟机,跨平台技术。

安装开发环境

https://www.bilibili.com/video/BV12J41137hu?p=17&spm_id_from=pageDriver

Java程序运行机制

  • 编译型 :一次性翻译,相当于翻译一本书
  • 解释型 :翻译人员,不可重复使用

IDEA安装

https://www.bilibili.com/video/BV12J41137hu?p=20 ,并选择相应的JDK,SDK 1.8 ,就对应下面的SDK 8

alt

标识符

只能以字母,$ 或者 _ 开头,且标识符只能由	字母、数字 ,$ 或者 _ 三者组成,或由中文组成。

数据类型 :基本类型 、引用类型

  • 基本数据类型(不包含String)
byte short int long float double char boolean
占字节数 1字节 2字节 4字节 8字节 4字节 8字节 2字节 1位(1bit)
范围 -128~127 -32768~32767 正负21亿 ... true、false
规则 1byte = 8bit = 1字节 1000L 20.5F 'a'✔、'ab'❌ 不能对 boolean进行转换
默认值 0 0 0 0 0.0 0.0 ‘’ false
  • 引用数据类型
"除了八大基本类型,其他都是引用类型"

变量

局部变量 实例**(成员)**变量 全局变量( static )
位置 方法内部 类内部,方法外部 方法外部
规则 必须声明、赋初值 不需要初始化,有默认值 static修饰
默认值 除了八大基本类型,其余默认值为null 除了八大基本类型,其余默认值为null

位运算(二进制,了解)

/* 	假设 A B 为 二进制数
    A = 0011 1100;
    B = 0000 1101;
    -------------------------------------------
    A&B = 0000 1100;	//	都为1 ,则为0
    A|B = 0011 1101;	//	一个为1,则为1
    A^B = 0011 0001;	// 异或 :相同得0,不同得1
    ~A = 1100 0011;		//	取反
   
    a<<b 左移		a*(b^2) 	
    a>>b 右移		a/(b^2)
*/
    2<<3 	==> 16
    16>>2	==> 4	

文档注释

public class Mytest {
   static byte a;
/**
 * @author 作者名
 * @version 版本号
 * @spine 指明需要最早使用的jdk版本
 * @param 
 * @return 返回值情况
 * @throws Exception
 */
    public static void main(String[] args) {
        Mytest mytest = new Mytest();
        System.out.println(16>>2);
    }

    /**
     * @author 作者名
     * @version 版本号
     * @spine 指明需要最早使用的jdk版本
     * @param name
     * @return
     * @throws Exception
     */
    public String method(String name){
        return "hello";
    }
}

IDEA 的 JavaDoc 生成功能在菜单
    Tools->Generate JavaDoc 项里面。
    选择Output directory 导出位置。
    Other command line arguments设置为 :-encoding UTF-8 -charset UTF-8

用户交互Scanner

Scanner scanner = new Scanner(Sysrem.in);

//判断是否还有输入
while(scanner.hasNext()){
    /*	不常用: 获取有效字符前,遇到的空格自动去除,
    			获取有效字符后,遇到空格或回车结束*/
	String str01 = scanner.next();
    //	常用:	  获取输入的这行字符串,回车结束
	String str02 = scanner.nextLine();
}

scanner.close();	"一定要关闭"

switch case

switch (expression){
      case value:
          //语句
          break;
      case value:
          //语句
          break;
      default:
      	  //语句
}

expression可以是 :byte、short、int、char	从JavaSE 7 开始:支持 String
value必须为 字符串常量 或 字面量(如1,2,3,4,a,b,c,d,'a','A' ... )

Java 内存分析

存放基本变量类型以及值,引用对象的变量(会存放这个引用在堆里的具体地址)
存放new的对象和数组以及唯一class,可以被所有线程共享,不会存放别的对象引用
方法区(属于堆) 可以被所有线程共享,都包含了所有的class和static变量

alt

多维数组

int[行][宽][高]

面向对象三大特性 :封装、继承、多态

  • super VS this
super 注意事项:
    1.super 调用父类的构造方法,必须在构造方法的第一个。
    2.super 必须只能出现在"子类" 的方法 or 构造方法。
    3.super 与 this 不能同时调用构造方法。
	4.super 只能在继承条件下才能使用
    5.this() :本类构造方法
    6.super(): 父类构造方法
  • 重写要求
static 方法属于类,不能被重写
final 是常量,加在方法上,不能被重写,加在类上面,断子绝孙了,不能extends了
private 也不能被重写
方法名,参数列表必须相同
修饰符只能扩大不能缩小		public > protected > default > private
抛出的异常范围只能缩小
  • 多态 (继承):基于 重写(非静态方法)
子父类相同 static 方法,调用规则:只和左边对象类型有关。
子类重写了父类方法,调用子类方法,如果子类没重写,调用父类方法。
父类不能调用子类独有的方法,要强转为子类类型才行。
注意多态是方法的多态,属性不存在多态
//父类B
public class B{
    public static void test(){sout("B==>test()");}
    public void sleep(){sout("B睡觉了");}
}

//B的子类A
public class A extends B{
    public static void test(){sout("A==>test()");}
    public void sleep(){sout("A睡觉了");}
}

psvm(String[] args){
    A a = new A();
    a.test();		//===>	A==>test()
    a.sleep();		//===>  A睡觉了
    B b = new A();
    b.test();		//===>	B==>test()
    b.sleep();		//===>  A睡觉了
}

结论:方法的调用只和左边对象类型有关,左边是A就调用A的test(),是B就调用B的test()。
   	 子类重写了父类方法,调用子类方法,如果子类没重写,调用父类方法
  • A instanceof B :完全有关系才成立
Person子类 :Student 和 Teacher ,Student 和 Teacher 没有关系

Object o = new Student();

	o instanceof Student	==> 	true
    o instanceof Person		==>		true
    o instanceof Object		==>		true
    o instanceof Teacher	==>		false
	o instanceof String		==>		false
//=================================
Person p = new Student();

	p instanceof Student	==>		true
    p instanceof Person		==>		true
    p instanceof Object		==>		true
    p instanceof Teacher	==>		false
	p instanceof String		==>		编译报错 :Person p = new Student() 与 String 毫无关联
//=================================
Student s = new Student();

	s instanceof Student	==>		true
    s instanceof Person		==>		true
    s instanceof Object		==>		true
    s instanceof Teacher	==>		编译报错 :Student p = new Student() 与 Teacher 毫无关联
	s instanceof String		==>		编译报错 :Student p = new Student() 与 String  毫无关联
   
结论 :A instanceof B 如果返回true,那么A要和B都有关系,像 p是由Person 、Student构成
      而Teacher只和Person是继承关系,和Student不是继承关系,所以返回 false

static 关键字

在同一类中 ,非静态方法可以直接调用静态方法,因为静态方法和类同生。
在同一类中 ,静态方法只能调用static修饰的资源,不能直接调用非静态资源,
		   因为静态资源和类同生,静态资源生成时,非静态资源还没生成。

异常

运行时异常不用处理
编译时异常一定要处理

alt

throw 和 throws的区别

throw(方法体中):手动生成异常对象,向外"抛"出一个异常
throws(函数上):处理异常对象,"捕获处理"别人抛的异常,控制台爆红
>#### 注意点

```java
局部变量(方法里面)必须声明和"赋初值"
实例变量(类里面,方法外面)不需要初始化,有默认值
全局变量(类里面,方法外面 static修饰)不需要初始化,有默认值
String 不是 关键字,不是基本数据类型 , 是引用类型,是类(对象)
String str1 = new String("hello");
String str2 = new String("hello");
str1 == str2	false	因为new了对象,使用地址不一样
String str1 = "hello";
String str1 = "hello";
str1 == str2	true	公用字符串
int i1 = 10;		十进制   :	10
int i2 = 010;		八进制   :	8
int i3 = 0x10;		十六进制 : 16
浮点数是有限的,离散的,大约值		==>
最好不要使用浮点数去比较(例如在银行中),一般用BigDecimal数学工具类比较。
int money = 10_0000_0000;
int years = 20;
int  total01 = money*years;	//会溢出
long total02 = money*years;	//会溢出,因为在赋值给long 类型total前,已经溢出
//================================解决方法,运算前先把一个数转换为long
long total03 = money*((long)years);	
int a=10;	int b=20;
sout(""+a+b);	==>	"1020"
sout(a+b+"");	==>	"30"	
java属于值传递
abstract 类 一定有抽象方法,也可以有普通方法,有抽象方法的类是抽象类。有构造器
interface 接口 都是抽象方法,不能实现方法。接口里的方法只需写: 
  		 "返回值 方法名(参数);" 没有构造器
一个java文件只能有一个public class,但是可以有多个class类
全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen_直通春招版:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务