| step over: 程序向下执⾏⼀⾏ |
| step into: 进⼊⾃定义⽅法 |
| step out: 跳出对应的⽅法 |
| 概述:java程序的组成,⽐如类名、⽅法名、变量名等 |
| 标识符可以由字⺟、数字、下划线_ 、美元符($)组成,但不能包含%,空格等其他特殊字符,不能以数字开头 * 区分⼤⼩写 * 不能是java关键字 |
| |
| 是电脑语⾔⾥事先定义的,有特别意义的标识符,有时⼜叫保留字,关键字不能⽤作变量名、⽅法名、类名、包名和参数 |
| |
| # 关键字如下 |
| boolean、byte、char、double、enum、float、int、long、short、void |
| private、protected、public、default |
| abstract、extends、class、interface、return、static、super |
| assert、break、case、try、catch、const、continue、do、else、final、finally、 |
| for、goto、if、implements、import |
| instanceof、native、new、package |
| switch、synchronized 、this、throw、throws |
| transient、volatile、while |
| 限定类、属性或⽅法是否可以被程序⾥的其他部分访问和调⽤的修饰符 |
| |
| # 如下 |
| private < default < protected < public |
| ⽤来修饰或者辅助功能 |
| |
| |
| static、final、abstract、synchronized |
| 在⼀个*.java的⽂件中,只能有⼀个public class的声明,有多个public则编译报错,其类名称必须与⽂件名称完全⼀致,但是允许有多个class的声明,如下在一个java文件中编写多个class案例 |
| |
| public class A{ |
| public static void main(String [] args){ |
| System.out.println("A"); |
| } |
| }; |
| class B{}; |
| class C{}; |
| bit 位 ,即0或者1, 0101010110 |
| byte字节,8位作为⼀个字节,字节是处理数据的基本单位 |
| 1 byte = 8bits |
| 1KB = 1024 bytes |
| 1MB = 1024 KB |
| 1GB = 1024 MB |
| byte |
| 8位 |
| 最⼤127,最⼩-128 |
| 节省空间,占⽤int类型的四分之⼀ |
| 默认 0 |
| short |
| 16位 |
| 最⼩-32768,最⼤32767 |
| int类型的⼆分之⼀ |
| 默认是0 |
| int |
| 32位 |
| 最⼩ -2147483648,最⼤ 2147483647 |
| 整数默认是int类型 |
| 默认是0 |
| long |
| 64位 |
| 最⼩ -9223372036854774808,最⼤ 9223372036854774807 |
| 默认是 0L, |
| float 浮点 |
| 单精度32位 |
| 默认0.0f |
| double |
| 双精度 64位 |
| 浮点数默认位double类型 |
| 默认是0.0 |
| boolean |
| 1位 |
| true或者false |
| 默认是false |
| char |
| 16位的 unicode字符,即两个字节表示⼀个字符 |
| 最⼩是 \u0000 即0,做⼤ \ufff 即65535 |
| 例⼦ char demo = 'A' |
| |
| 类型转换 double > float > long > int > short > byte |
| ⼩转换到⼤,可以直接转换,⽽从⼤到⼩,需要强制转,会有精度丢失 |
| Class创建的对象 或者 数组都是引⽤数据类型;String字符串对象,也是引⽤数据类型 |
| ⼀种数据结构,⽤来存储同⼀类型之的集合 |
| 通过⼀个整形下标可以访问数组中的每⼀个值, 从0开始计算 |
| 内存中存储相同数据类型的连续的空间 |
| |
| 所有元素都初始化为0,boolean数组的元素会初始化为false |
| ⼀旦创建了数组,就不能改变它的⼤⼩ |
| 数组需要初始化才可以操作,不能索引越界 |
| |
| |
| int [] numbers; |
| |
| |
| int [] numbers2 = new int[100]; |
| |
| |
| int [] numbers; |
| int numbers2 []; |
| |
| |
| int[] numbers = { 1,2,3,4,5,6 }; |
| |
| |
| new int[] { 1,2,3,4,5,6 }; |
| int [] numbers = {1,2,3}; |
| String[] str=new String[2]; |
| String[] str= {"apple", "xdclass", "cat", "dog"}; |
| |
| int [][] numbers = {[1,2,3],[4,5,6],[7,8,9]} |
| |
| int [][] numbers2 = new int[3][3]; |
| 基本数据类型 byte,short, int,long, float,doble,boolean,char |
| |
| 引⽤数据类型,即除了基本的变量类型之外的所有类型 |
| 基本的变量类型只有⼀块存储空间(分配在stack中) |
| 传递的时候直接是值传递 |
| 对数据进⾏操作,不影响原先的值 |
| |
| 引⽤类型有两块存储空间(⼀块在stack中,⼀块在heap中) |
| ⼀个对象在内存中会请求⼀块空间来保存数据,访问对象的时候不会直接是访问对象在内存中的数据,⽽是通过引⽤去访问 |
| 引⽤: 也是⼀种数据类型,保存的是内存的地址,引⽤是存储在 stack栈空间⾥⾯ |
| 不同的引⽤可以指向同⼀个对象,⼀个对象可以有多个引⽤ |

| 使⽤static声明的变量,可以直接使⽤ 类名.变量名访问 |
| ⼀个类不管创建了多少个对象,类只拥有类变量的⼀份拷⻉,数值默认值是0,布尔型默认值是false,引⽤类型默认值是null |
| ⽣命周期: 在第⼀次被访问时创建,在程序结束时销毁 |
| 声明为public类型,⼀般这样声明 public static final |
| 存储在⽅法区,和堆栈不⼀样的⼀个空间 |
| |
| public class Student{ |
| public static final String PREFIX = "我是叫"; |
| } |
| 需要使⽤对象.变量名才可以访问 |
| 对象被实例化之后,实例变量的值就跟着确定,可以是赋值,也可以是默认值 |
| ⽣命周期: 在对象创建的时候创建,在对象被销毁的时候销毁 |
| 访问修饰符可以修饰实例变量,⼀般是私有的,private修饰,然后通过⽅法来进⾏查看或者修改 |
| |
| public class Student { |
| |
| private int age; |
| |
| |
| private String name; |
| |
| public int getAge() { |
| return age; |
| } |
| public void setAge(int age) { |
| this.age = age; |
| } |
| public String getName() { |
| return name; |
| } |
| public void setName(String name) { |
| this.name = name; |
| } |
| } |
| ⽅法中的变量 |
| 声明在⽅法、构造⽅法、语句块、形式参数等 |
| ⽣命周期: 当它们执⾏完成后,变量将会被销毁 |
| 访问修饰符不能⽤于局部变量 |
| 局部变量没有初始值,必须初始化后才可以被使⽤ |
| |
| public class Student { |
| |
| private int age; |
| |
| private String name; |
| |
| public int getAge() { |
| return age; |
| } |
| public void setAge(int age) { |
| this.age = age; |
| } |
| public String getName() { |
| return name; |
| } |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| |
| public String introduce(){ |
| |
| String content = PREFIX + name + ",年龄是" + age; |
| return content; |
| } |
| } |
| 修饰符 返回类型 ⽅法名(参数类型 参数名,参数类型 参数名...){ |
| |
| |
| |
| return |
| } |
| return xxx 具体类型 |
| 如果不⽤返回,则⽅法返回类型上写 void |
| |
| # 如下 |
| 修饰符 void ⽅法名(参数类型 参数名,参数类型 参数名...){ |
| |
| |
| |
| } |
| 加法 + |
| 减法 - |
| 乘法 * |
| 除法 / |
| 取余 % |
| 取余 % |
| |
| ⾃增1 ++ |
| a++ 就是 a=a+1 |
| ⾃减1 |
| a |
| |
| ⾃增(++)⾃减( |
| ⾃增(++)⾃减(—)在变量左右有不同的意义 |
| 在变量左边则先⾃增减操作,再进⾏表达式运算 |
| 在变量右边则先进⾏表达式运算,在进⾏⾃增减操作 |
| ⾃增和⾃减运算符只能⽤于操作变量,不能直接⽤于操作数值或常量 |
- 关系运算符(⽤于数值的⽐较,不能是字符串等其他⾮数值)
| 等号 == |
| 不等 != |
| ⼤于 > |
| ⼤于或等于 >= |
| ⼩于 < |
| ⼩于或等于 <= |
| 逻辑与 && |
| 仅当两个操作数都为真,条件才为真 |
| 有短路作⽤ |
| |
| 逻辑或 || |
| 任何两个操作数任何⼀个为真,条件为真 |
| 有短路作⽤ |
| |
| 逻辑⾮ ! |
| 反转操作数,如果条件为true,则逻辑⾮运算符将得到false |
| |
| 赋值 = |
| 加和赋值 + = |
| 减和赋值 - = |
| 乘和赋值 * = |
| 除和赋值 / = |
| 格式 |
| 条件 ? 成功 : 否则 |
| |
| 例⼦ |
| int age =5; |
| age > 18: "成年": "未成年" |
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
2021-04-30 Java基础和常用框架的面试题