# day01
一:基本操作
package _01.java基本操作; /** * 文档注释 */ public class _01Alls { public static void main(String[] args){ /* * 数据类型: * 数值型: * 整数:byte(1), short(2), int(4), long(8) * 浮点:float(4), double(8) * 字符串:char(2) * 布尔 :boolean(1) * * String:双引号(单引号只能放一个) * * 类型转换: * 手动转换: * 1. 不能直接把一个大的类型赋值给小的类型 * 2. 强制类型转换后才可赋值:byte b (byte)100; * 自动转换: * 1. 运算时,两端类型需要一致 * 2. 如果是数值运算,会把小的转换为大的类型 * 3. JVM 运算时,最小识别类型时 int (byte,short char 会自动提升为 int 类型) * * 自增与自减: * 注:a++ / a-- 参与运算时使用初始值 * ++a / --a 参与运算时使用的是自增后或自减后的值 * * 三元运算: * 接收值 = 逻辑表达式 ?表达式1(true) : 表达式2(false) * * 逻辑运算: * ^ : 相同返回 false, 不同返回 true * && / || : 一旦一方成立,后面不再执行 * * switch 语句: * 1. 完整写法: * switch(整型表达式){ * case 值1 : { * 返回结果; * }break; * case 值2 : { * 返回结果; * }break; * default : 没有条件满足则执行此语句; * } * 2. 简写: * switch(整型表达式){ * case 值1 : 返回结果;break; * case 值2 : 返回结果;break; * case 值3 : 返回结果;break; * default : 没有条件满足则执行此语句; * } * * do while(先执行一次代码块,再进行判断): * do{ * 代码块; * }while(表达式); * * for 循环:( 可以给循环起 别名:outter : for(..){...} ) * for(int num = 1; num <= 10; num++){ * 代码块; * } * foreach: * for(数据类型 i : 数组){ * 代码块; * } * * 终止: * 1. break : 跳出循环, 后续同级代码继续执行 * 2. return : 跳出循环, 后续不执行,包括同层级代码 * * 方法: * 1. 声明到 class 中 * 2. 如果一个方法之前有 static 那么这个方法也需要加 static * 3. void : 这个参数意思是返回空, 但是如果有返回值的话, void需要改成返回值的数据类型 * 方法重载: * - 在同一个类中,允许两个方法名重复,但前提是两个方法的参数(类型也可以一致)不能一致 * * 可变参数: * 1. 数组: void a(int[] arg){xxx} * 2. 可变: void a(int ...arg){xxx} * */ // 变量声明 int a = 10; int b = 20; // // // 打印 System.out.println('a'); System.out.println(true ^ false); // true int num = 100; if(num == 100){ System.out.println("true"); } boolean s = true; while(s){ System.out.println('1'); } } }
二:数组
package _01.java基本操作; public class Array { public static void main(String[] args) { // 数组写法: // 要存放的数据类型[] 数组名 = new 要存放的数据类型[] {存放的数据内容} // 简写:int[] array = {1,2,3} // int[] array = new int[] {1,2,3}; // System.out.println(array[0]); /* // 1. 静态定义数组 // 定义一个数组 String[] strInfo; // 初始化数组 strInfo = new String[] {"q","w"}; System.out.println(strInfo[1]); String l = "["; for(int i=0; i<strInfo.length; i++){ l+=strInfo[i]+','; } String res = l+"]"; System.out.println(res); */ // 2. 动态定义数组 // String[] all = new String[100]; // all[0] = "Hello"; // System.out.println(all[0]); // 3. 二维数组 // 写法:int[][] Arrays = new int[][] {arr1,arr2,arr3} // 获取: int[] arr1 = {1,2,3}; int[] arr2 = {4,5,6}; int[][] arr = {arr1,arr2}; for(int i : arr1){ System.out.println(i); } /* for(int i = 0; i<arr.length; i++){ int[] now_arr = arr[i]; for(int j = 0; j < now_arr.length; j++){ System.out.println(now_arr[j]); } } */ } }
三:面向对象
package _02.java面向对象; public class _02SomeInfo { String name; int age; _02SomeInfo(String name){ this.name = name; } _02SomeInfo(String name, int age){ this(name); this.age = age; } void run(){ System.out.println(name+" is Run.."); } void eat(String food){ System.out.println(name+" want Eat " +food); } public static void main(String[] args){ /* _02SomeInfo info = new _02SomeInfo(); info.name = "q"; info.age = 11; info.run(); info.eat("apple"); */ _02SomeInfo info = new _02SomeInfo("q",11); info.run(); info.eat("apple"); } /* * 虚拟机栈:(每个函数从调用到执行结束,就是对应一个栈帧的入栈和出栈) * 当执行一个方法时,就会为这个函数创建一个栈帧,并加入虚拟机栈。 * * 堆:被所有线程共享的一块区域,在虚拟机启动时创建,所有的对象实例及数组都在堆上分配 * (使用 new 关键字表示在堆中开辟一块新的空间) * * 属性概念: * - 有 getter/setter 方法的才是属性,否则是 字段或成员变量。 * * 构造器: * 1. 作用: * - 创建对象,必须和new一起使用。 * - 完成对象的初始操作。 * 2. 特点: * - 构造器的名称和当前类名是一样的。 * - 禁止有返回类型,不能使用void作为fa返回值。 * - 在构造器中不能使用 return * - 但是构造器有返回值(返回值时内存地址) * 3. 默认构造器特点: * - 符合构造器特点。 * - 无参数。 * - 如果类中有 public 装饰,那么构造器也会有public,否则无。 * 4. 自定义构造器: * - 使用: * User(){ * 代码块; * } * - 构造器重载: * User(String name){ * Myname = name; * } * User(String name, int age){ * Myname = name; * Myage = age; * } * * static 修饰符: * 1. 概念: * - 如果在字段或方法面添加了 static, 那么它的字段或方法就属于类(类成员),没有添加则是 实例成员 * 2. 特点: * - static装饰的内容是随着类的加载而加载的。 * - static装饰的内容,优先于对象的存在。 * - static装饰的内容,被该类型的所有对象共享。 * - static装饰的内容,可以直接使用类名调用。 * 3. 类成员和实例成员的访问: * - 在 static 方法中只能调用 static 成员 * - 非 static 方法,两者都可以访问。 * 4. 注: * - 方法中不能定义以 static装饰的变量。 * * 封装: * 1. 访问修饰符: * - private : 表示私有(类访问权限),且只能在类中才有访问权限。 * - protected : 表示子类访问权限,同包中可以访问,不同包中不能访问,同包不同类不能访问,继承可以访问。 * - public : 表示全局,可以在项目中任何地方使用。 * - 默认 : 表示包访问权限,同一类中可以访问,同一包,不同类可以访问,不同包不能访问。 * * this: * 1. 解决成员变量和参数问题。 * 2. static 不能和 this 一起使用。 * 3. 构造器的重载互调: * - 在一个构造器中调用另一个构造器: * - this(xx) // 必须写在第一行。 * User(String name){ * this.name = name; * } * User(String name, int age){ * this(name); * this.age = age; * } * */ }