java从入门到精通
1. 进制转换
1.1 二进制和十进制
1.2 八进制
package com.itheima.variable;
public class ASCIIDemo1 {
public static void main(String[] args) {
// 目标:掌握ASCII编码表的编码特点。
System.out.println('a' + 10); // 97 + 10 = 107
System.out.println('A' + 10); // 65 + 10 = 75
System.out.println('0' + 10); // 48 + 10 = 58
// 二进制 八进制 十六进制在程序中的写法。
int a1 = 0B01100001;
System.out.println(a1); //97
int a2 = 0141; // 0开头的数据当成八进制看待!
System.out.println(a2); //97
int a3 = 0XFA; // 0X开头的数据是十六进制
System.out.println(a3);
}
}
1.3 十六进制
2. 类型及转换
2.1 基本数据类型
1字节等于8位(2进制)
2.2 自动类型转换
package com.itheima.type;
public class TypeConversionDemo1 {
public static void main(String[] args) {
// 目标:理解自动类型转换机制。
byte a = 12;
int b = a; // 发生了自动类型转换了
System.out.println(a);
System.out.println(b);
int c = 100; // 4
double d = c;// 8 发生了自动类型转换了
System.out.println(d);
char ch = 'a'; // 'a' 97 => 00000000 01100001
int i = ch; // 发生了自动类型转换了 => 00000000 00000000 00000000 01100001
System.out.println(i); //97
}
}
3. 数组
3.1数组在内存中的执行原理
4. 方法
4.1在内存中的执行原理
4.2 java中的方法传递
4.2.1 基本数据类型传递
package com.itheima.parameter;
public class MethodDemo1 {
public static void main(String[] args) {
// 目标:理解方法的参数传递机制:值传递。
int a = 10;
change(a); // change(10);
System.out.println("main:" + a); // 10
}
public static void change(int a){
System.out.println("change1:" + a); // 10
a = 20;
System.out.println("change2:" + a); // 20
}
}
4.2.2 引用数据类型传递
package com.itheima.parameter;
public class MethodDemo2 {
public static void main(String[] args) {
// 目标:理解引用类型的参数传递机制:值传递的。
int[] arrs = new int[]{10, 20, 30};
change(arrs);
System.out.println("main:" + arrs[1]); //222
}
public static void change(int[] arrs){
System.out.println("方法内1:" + arrs[1]); //20
arrs[1] = 222;
System.out.println("方法内2:" + arrs[1]); //222
}
}
5. 对象
5.1 对象在内存中的执行原理
5.2 this的执行原理
5.3 static的用法
5.4 成员变量的执行原理
5.5 成员方法
5.6 静态代码块
5.7 实例代码块
6. string
7. 继承
7.1 继承的执行原理
7.2 权限修饰符
7.3 子类构造器
7.4 final
package com.itheima.d3_final;
public class Test {
/**
* 常量: public static final修饰的成员变量,建议名称全部大写,多个单词下划线连接
*/
public static final String SCHOOL_NAME = "黑马";
private final String name = "猪八戒"; // 这种用法没有意义,知道就行
public static void main(String[] args) {
// 目标:认识final的作用。
// 3、final可以修饰变量总规则:有且仅能赋值一次
/* 变量:
一,局部变量
二,成员变量
1、静态成员变量
2、实例成员变量
*/
final int a;
a = 12;
// a = 13; // 第二次赋值,出错了
final double r = 3.14;
// r = 0.1; // 第二次赋值,出错了
final int[] arr = {11, 22, 33};
// arr = null; // 第二次赋值,出错了
arr[1] = 222;
// schoolName = "白马"; // 第二次赋值,出错了
Test t = new Test();
// t.name = "孙悟空";// 第二次赋值,出错了
}
public static void buy(final double z){
// z = 0.1;// 第二次赋值,出错了
}
}
// 1、final修饰类,类不能被继承了
final class A{}
//class B extends A{}
// 2、final修饰方法,方法不能被重写了
class C{
public final void test(){
}
}
class D extends C{
// @Override
// public void test() {
//
// }
}
final int[] arr = {11, 22, 33};
// arr = null; // 第二次赋值,出错了,final修饰地址不能改变
arr[1] = 222; //值是可以改变的
8. 抽象类
8.1 模板方法设计模式
9. 接口
jdk 8 之后接口新增了三种方法
package com.itheima.d10_interface_jdk8;
public interface A {
/**
* 1、默认方法:必须使用default修饰,默认会被public修饰
* 实例方法:对象的方法,必须使用实现类的对象来访问。
*/
default void test1(){
System.out.println("===默认方法==");
test2();
}
/**
* 2、私有方法:必须使用private修饰。(JDK 9开始才支持的)
* 实例方法:对象的方法。
*/
private void test2(){
System.out.println("===私有方法==");
}
/**
* 3、静态方法:必须使用static修饰,默认会被public修饰
*/
static void test3(){
System.out.println("==静态方法==");
}
void test4();
void test5();
default void test6(){
}
}
10. 内部类
10.1 成员内部类
package com.itheima.d1_inner_class1;
public class Outer {
private int age = 99;
public static String a;
// 成员内部类
public class Inner{
private String name;
public static String schoolName; // JDK 16开始才支持定义静态成员的
private int age = 88;
public void test(){
System.out.println(age); //内部类可以访问外部类的成员变量
System.out.println(a);
int age = 66; //内部类、外部类变量名相同,如何访问
System.out.println(age);// 66
System.out.println(this.age);// 88
System.out.println(Outer.this.age);// 99
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public void test2(){
System.out.println(age);
System.out.println(a);
}
}
package com.itheima.d1_inner_class1;
public class Test {
public static void main(String[] args) {
// 目标:了解成员内部类和其特点。
Outer.Inner in = new Outer().new Inner();
in.test();
}
}
10.2 静态内部类
package com.itheima.d2_inner_class2;
public class Outer {
private int age = 99;
public static String schoolName;
// 静态内部类
public static class Inner{
private String name;
public static int a;
private int age = 88;
public void test(){
System.out.println(schoolName);
// System.out.println(age); //静态内部类与静态方法类似,只能访问外部类的静态成员变量, //不能访问实例变量
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void test2(){
System.out.println(schoolName); //静态方法只能访问静态成员变量
// System.out.println(age); //静态方法不能访问实例变量
}
}
package com.itheima.d2_inner_class2;
public class Test {
public static void main(String[] args) {
// 目标:了解静态内部类。
Outer.Inner in = new Outer.Inner();
in.test();
}
}
10.3 局部内部类
10.4 匿名内部类
利用之前的子类去实现功能
package com.itheima.d3_inner_class3;
public class Test {
public static void main(String[] args) {
// 目标:认识匿名内部类,并掌握其作用。
Animal a = new Cat();
a.cry();
}
}
class Cat extends Animal{
@Override
public void cry() {
System.out.println("猫喵喵喵的叫~~~");
}
}
abstract class Animal{
public abstract void cry();
}
利用匿名内部类实现该功能
package com.itheima.d3_inner_class3;
public class Test {
public static void main(String[] args) {
// 目标:认识匿名内部类,并掌握其作用。
// 1、把这个匿名内部类编译成一个子类,然后会立即创建一个子类对象出来。
Animal a = new Animal(){
@Override
public void cry() {
System.out.println("猫喵喵喵的叫~~~");
}
};
a.cry();
}
}
abstract class Animal{
public abstract void cry();
}
10.5 匿名内部类的使用场景
package com.itheima.d3_inner_class3;
public class Test2 {
public static void main(String[] args) {
// 目标:掌握匿名的常见使用场景。
// Swimming s1 = new Swimming(){
// @Override
// public void swim() {
// System.out.println("狗
标签:精通,java,入门,void,System,class,println,public,out
From: https://www.cnblogs.com/xinmomoyan/p/18252040