JAVA —— 02
而java8之后出现默认方法,此时强制规定,若多个接口内有相同的默认方法,子类必须重写这个方法,不然编译期就会报错。引用数据类型传递的是引用的副本即对象引用的内存地址。而接口的实现相当于能力的实现,能力可以后天培养,可以结合多个角度整合(重写)出自己的能力。这里的num是Main类的实例变量,但它是private的。基本数据类型存储在栈内存中,引用数据类型的变量存储的是对象在堆中的内存地址。B、C
一、系统温习——黑马程序员Java+AI智能辅助编程全套视频教程
Java程序的基础语法
-
注释
注释的三种写法:①// 单行注释;②/* */ 多行注释;③/** */文档注释
补充:
Java开发的软件,功能的最小单位是一个一个的 方法。
文档注释一般写在方法上面或类的上面。且在其上的注释内容会被提取到程序说明文档中去。
注释只作用在代码阶段,编译后的class文件中注释已被自动去除。
可以借用通义灵码选中代码后自动生成注释。
-
字面量
Java程序中数据的书写格式:①字符-必须使用单引号,有且仅有一个字符;②字符串-必须使用双引号,内容可有可无;③布尔值-只有true/false。
特殊字符:\n - 换行;\t – Tab缩进
-
变量
变量是内存中的一块区域,可以理解为用来装待处理数据的盒子。
格式: 数据类型 变量名称 = 数据
使用变量存储要处理的数据,编写代码更灵活,管理代码更方便。
变量装的数据可以被替换。
数据在计算机底层采用二进制存储,最小存储单元:字节(1B = 8bit)。
字符数据在计算机存的是ascii码表中对应的数字的二进制形式。
Java程序中二进制数据以0B或者0b开头;八进制以0开头;十六进制以0X或者0x开头。
Java基本数据类型有4大类8种

随便写一个整数字面量默认是int类型,如果希望字面量是long类型,则需要显式的指定,在字面量后加L或者l。随便写一个浮点数字面量默认是double类型,若希望字面量是float类型则需在字面量后加上F或f。
-
关键字、标识符
关键字是Java语言自己用的一些词汇,有特殊作用,称之为关键字。
标识符是名字(类名、变量名等),一般以数字、字母、下划线和美元符组成,不能以数字开头。变量名建议首字母小写,类名建议首字母大写。
-
方法
方法是一种用于执行特定任务或操作的代码块,代表一个功能,可以接收数据进行处理,并返回一个处理后的结果。
方法的完整定义格式:

方法需要被调用才能执行,调用格式:方法名称(数据)。
如果方法不需要返回数据,返回值类型必须声明成void(无返回值声明)方法内部不可以使用return返回数据。
方法可以重载:一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。
方法重载只关心方法名称相同,形参列表不同(类型不同,个数不同,顺序不同)。
无返回值的方法中可以直接通过单独的return;立即结束当前方法的执行。
-
类型转换
存在不同类型的变量赋值给其他类型的变量
自动类型转换:类型范围小的变量,可以直接赋值给类型范围大的变量。
类型范围大的变量,不可以直接赋值给类型范围小的变量,会报错,需要强制类型转换,强转可能导致数据(丢失)溢出,浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
强制类型转换: 数据类型 变量2 = (数据类型)变量1
表达式的自动类型提升:在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。

表达式的最终结果类型由表达式中的最高类型决定。
在表达式中,byte、short、char是直接转换成int类型参与运算的。

![]()
-
输入输出
输出:把程序中的数据展示出来。
输入:程序读取用户键盘输入的数据。
IDEA自动导包:Settings-搜索Auto import

-
运算符
Java中两个整数相除(/)的结果还是整数。
%(取余)获得的是两个数据做除法的余数,
可以在表达式中*1.0来使得获得的结果为小数。
+符号与字符串运算的时候用作连接符,其结果依然是一个字符串。

自增:++ 放在某变量前或后,对变量自身的值+1
自减:-- 放在某变量前或后,对变量自身的值 – 1
自增自减在变量前后单独使用没有区别。
如果不是单独使用,放前会先加后用;放后会先用后加。
赋值运算符(=),从右边往左看。
扩展赋值运算符:(隐含了强制类型转换)


在java中判断是否相等使用的是“==”。
三元运算符格式:条件表达式 ? 值1 : 值2;
计算关系表达式的值,若为true则返回值1,若为false,返回值2.。
![]()
^: 逻辑异或。前后条件相同返回false,不同返回true。
&& 短路与 判断结果和&一样,过程不同:左边为false,右边则不执行。
|| 短路或 判断结果和 | 一样,过程不同:左边为true,右边则不执行。
案例:健康计算器
需求:接收用户的输入(年龄、性别、体重、身高)并计算出用户的BMI(身体质量指数)和BMR(基础代谢率)。

二、刷选择题——牛客网Java题组
-
Serializable接口
Serializable是一个标记接口(marker interface),它没有任何方法需要实现,仅仅是标识这个类可以被序列化。当一个类实现了Serializable接口后,该类的对象就能够被转换为字节流,用于网络传输或持久化存储。
-
子类无法直接访问父类的私有字段

类Main有一个实例变量private int num = 10;有一个public void printNum()方法,打印num。在main方法中,创建了一个Main的匿名子类,并重写了printNum()方法。
在匿名类中重写的方法里,直接访问了num。这里的num是Main类的实例变量,但它是private的。在子类(即使是匿名子类)中,不能直接访问父类的私有成员。
如果要在子类中访问num,可以:将num改为protected或public。或者通过父类的公有/受保护的方法来访问(例如调用super.printNum()或提供一个getNum()方法)。
-
Statement接口的继承关系
JDBC中各种Statement接口的继承关系如下:Statement是最基本的接口,PreparedStatement继承自Statement接口,而CallableStatement又继承自PreparedStatement接口。
Statement:用于执行静态SQL语句
PreparedStatement:预编译SQL语句,可以使用参数
CallableStatement:用于调用存储过程,继承了PreparedStatement的所有功能
三、刷面试陈述题——面试鸭
Java的优势

Java中的参数传递是按值还是按引用
在java中,参数传递只有按值传递,不论是基本类型还是引用类型。
基本数据类型传递的是值的副本即数值本身。对方法参数的任何修改都不会影响原始变量。
引用数据类型传递的是引用的副本即对象引用的内存地址。方法内可以通过引用拿到对象并修改对象的属性,但不能改变引用本身使其指向另一个对象。
基本数据类型存储在栈内存中,引用数据类型的变量存储的是对象在堆中的内存地址。引用类型变量作为参数传递时,传递的是这个地址的副本。
不可变类在多线程环境中不需要额外的同步控制,它们的状态一旦创建就不能改变。
为什么java不支持多重继承
多继承会产生菱形继承

B、C都继承了A,而D又继承了B、C,当D要调用A中的方法时,因为B、C有不同的实现,此时不知调用哪个会出现歧义。
接口可以多实现,在java8之前接口无法定义具体方法实现,所以即使有多个接口子类必须自己实现方法,故不产生歧义。而java8之后出现默认方法,此时强制规定,若多个接口内有相同的默认方法,子类必须重写这个方法,不然编译期就会报错。
继承的东西无法改变,相当于天生遗传的基因;而接口的实现相当于能力的实现,能力可以后天培养,可以结合多个角度整合(重写)出自己的能力。
更多推荐


所有评论(0)