菜鸟进阶必杀技(Ⅰ)——java基础知识解析篇

Flutter如何调用java接口如何导入java包 Flutter 无法直接调用 Java 接口或导入 Java 包。使用可以让 Flutter 与 Java 通信,从而间接调用 Java 方法。如果需要导入第三方 Java 包,可以通过 Android 模块配置并使用 Platform Channels 来集成其功能。结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。 阅读详情

开篇语:这篇文章是 java面试那件小事  系列文章的第一篇。该系列的文章将所有的读者都想象成是一个初学者,由浅入深的引入java相关的一些问题。这些问题都是sandeziVIP和朋友一起整理,或在群里或在论坛或查阅网络收集的一些出现频率较高且重要,当然也是必须要掌握的内容。如果你认为i你已经超出初学者了,却不是很懂每篇文章开头引入的几个问题,请把自己重归到初学者的行列。

java基础知识篇将涉及到 面向对象基本,操作符,控制执行流程以及初始化相关的内容。

问题:

  1. 面向对象的特征有哪些方面?
  2. Integer与int的区别?
  3. short num = 1;num = num+1;有什么错?short num =1 ; num +=1;有没有错?
  4. &和&&的区别?以及用最有效率的方法算出2乘以8等于几
  5. 静态变量和实例变量的区别
  6. equals()和==到底有什么区别?
  7. Overloaded和Override的区别。Overloaded的方法是否可以改变返回值的类型?
  8. fianl,finally,finalize的区别?
分析和解答:
 面向对象的特征有哪些方面?
学习java一开始接触的概念应该就是面向对象了,那么什么是面向对象,面向对象有哪些特点,面向对象编程有哪些好处?提到面向对象,诸如此类的问题一定也会扑面而来,但是个人认为面向对象毕竟是一种思想,没有长期的接触应用和体会还是很难用简短的文字去告诉你有关面向对象的这样那样的问题。但有一点可以肯定,熟记面向对象的特征,对你日后逐步深化面向对象的理解有很大的帮助。所以这一部分我还是以教科书的方式给出官方的答案:

  • 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
  • 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
  • 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
  • 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
基本理清这方面的概念之后,推荐大家看看这篇文章:程序员必备的七大面向对象原则

Integer与int的区别?

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。在jsp开发中,Integer的默认值为null,所以用el表达式在文本框中显示时,值为null;而int默认为0,所以在el表达式在文本框中显示时,结果为0,所以int不适合作为web层的表单数据的类型(具体见下表)。

基本类型大  小最小值最大值封装类型
boolean———Boolean
char16bits(2字节)Unicode 0Unicode 2^16-1Character
byte8bits(1字节)-128127Byte
short16bits(2字节)-2^15+2^15-1Short
int32bits(4字节)-2^31+2^31-1Integer
long64bits(8字节)-2^63+2^63-1Long
float32bits(4字节)IEEE754标准IEEE754Float
double64bits(8字节)IEEE754IEEE754Double

  • 所有数值类型都有正负号,所以不要去寻找无符号的数值类型
  • boolean类型所占用存储空间的大小没有明确指定,仅定义为能够取字面值true或false
short num = 1;num = num+1;有什么错?short num =1 ; num +=1;有没有错?
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型,这样子才可以正确的编译)  short s1 = 1; s1 += 1;(可以正确编译)

&和&&的区别?以及用最有效率的方法算出2乘以8等于几
&和&&都可以作为逻辑运算符,表示逻辑与(and),当运算符两边的表达式结构都为true时,运算结果才为true,否则,只要有一方为false,则结果为false。

&&又叫做短路与,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于 if(!str=null&&!str.equals(""))表达式,当str为null时,后面的表达式不会执行,所以就不会出现NullPoninterException异常,如果将&&改为&,则会抛出空指针异常。

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。

2<<3应该是2*8的最有效率的运算方式。因为,将一个数左移n位,就相当于乘以了2的n次方,那么一个数乘以8只要将其左移3位即可。而位运算(<<)是cpu支持的,效率也就最高。

静态变量和实例变量的区别?

有static关键字修饰的变量叫做静态变量,因为其创建只是作为整个类而不是某个特定对象而存在,所以也叫做类变量。反之没有被static修饰的变量则叫做实例变量。

类变量和实例变量的区别:

  1. 一个static变量对每个类来说只有一份存储空;而非static变量(实例变量)则是对每个对象都有一个存储空间
  2. static变量即可以通过一个对象去定位它,也可以空过其类名直接引用;而对于非static变量则只能通过对象去引用
看下面这个例子:
class TestStatic{
	static int i = 5;
}
现在创建两个TestSatic对象
TestStatic ts1 = new TestStatic();
TestStatic ts2 = new TestStatic();
这里 ts1.i 和 ts2.1 指向同一存储空间,因此他们具有相同的值5
如果要引用static变量i的话,既可以通过一个对象去定位,如同ts1.i;也可以通过其类名直接引用,如TestStatic.i,这个对于非静态变量时非法的

equals()和==到底有什么区别?

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。

深入了解此题详见sandeziVIP早前的博文:从equals和==说起

Overloaded和Override的区别。Overloaded的方法是否可以改变返回值的类型?

overloaded表示重载,即在类中可以创建多个方法,它们具有相同的方法名,但具有不同的参数类型列表;Override表示重写,即子类中定义了与基类中具有相同名称和参数列表的方法,此时基类的中的该方法将被隐藏。

深入了解此题详见sandeziVIP的博文 :关于java方法的重载(Overloading),覆写(Override)以及final 方法的几点说明

fianl,finally,finalize的区别?

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

PS:

本系列文章都遵循永久更新原则,发现新的东西都会及时加入,所以依旧希望大家积极讨论,不吝赐教。

另遇到问题较为繁琐且重要都会单独成文以说明之。

本系列文章更新列表入口:java面试那件小事

 此文属http://blog.youkuaiyun.com/sandeziVIP搜集整理,任何形式的转载或引用请注明出处!

java导入Excel表格数据 一、思路是这样的: 1.先做好一个Excel模板供用户下载,例如下图 2.用户使用模板填好数据,上传Excel文件到web后台,后台接收文件。 3.把用户上传的文件进行校验文件格式、字段是否符合要求,符合要求则解析数据,保存到数据库中,不符合要求则提示; 二、代码实现 1.要导入的数据JAVA对象如下: public clas... 阅读详情

相关推荐

android studio 用kotlin语言app导入模块module方法 和册除模块的方法

android studio kotlin 工程添加java模块方法和册除方法

heroismzhu的专栏 1204

硬件工程师必看-必杀技学习

硬件工程师必看-必杀技学习,供硬件工程师参考。

eclipse导入maven模块项目步骤以及问题处理

目前很多的maven项目都是分模块开发的,例如一个项目分为:web模块,biz模块,service模块,api模块,job模块等等,这种情况在导入到eclipse的时候可能会有很多编译错误,下面就教给大家如何处理在eclipse中导入maven模块项目以及处理编译问题。

jianjun200607的专栏 1万+

Java中自增运算符(++)num++ 和算数运算符(+)num = num + 1 和 赋值运算符(+=)num += 1的区别

先声明一个变量int num = 0;假设要对该变量加一,通常有三种方法: num = num + 1; num += 1; num++; 上述三种都可以使 num 最终结果等于1; 可是上述三种运算它们有什么区别呢?其内部运算性质是一样的吗?答案是否定的。

弹弹霹雳的博客 2582

Java模块化

为了保证兼容性,高版本的JDK,首先保证始终支持直接运行jar包中的代码,然后,在相应的命令行工具,比如javac和java中,添加对于模块化jar包的支持。至于jmod文件,则主要用于构建可独立运行的“运行时环境”,有一个jlink工具可以完成这个工作,具体地说,就是jlink会将特定程序中用到的jmod模块抽取出来,构建出一个可独立运行的“文件集合”,这个文件集合仅包容它所用到的模块,移除了无关的模块,因此,比标准的JDK运行时环境要小得多,并且不强制要求目标计算机上预先安装有特定版本的JRE。

vonlinee的博客 1350

JAVA导入带有图片的excel

需求说明 项目中需要将企业已有员工信息通过excel的形式导入到系统中,方便企业快速便捷使用系统 导入依赖jar <!--导入Excel--> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId&gt...

w_w_w10_21的博客 1万+

Java num+=1、num++与num=num+1的区别(通俗易懂,附带例子)

知识预热:(看到最后有彩蛋) 1、在Java中,默认的整形常量的类型是int类型。 2、如果int类型转换为short类型,那么不强制转换必定会报错。 那么问题来了: 已知条件: short num=10; 情况一: num=num+2; 情况二: num+=1; 请问上面的两种情况是否会报错?如果不会那么结果是多少呢? 情况一: 情况二: 总结: 1、情况一:因为在Java中常量的默认...

好吃的爆米花 8103

Java导入SSL证书参考手册

Java程序进行HTTPS通信发生如下错误:这是因为访问的服务器的链接是https,系统涉及与第三方支付平台交易,通讯协议为HTTPS单向认证交易时报错,异常信息主要意思为服务器提供的证书不被我们客户端信任。要解决这个问题需要将安全证书导入到java的cacerts证书库中。本文以导入vbooking安全证书为例,讲解具体操作步骤。

weixin_45578041的博客 2619

浅谈java中: short s = s + 1和s += 1的区别

摘要 在这篇文章中,我会结合自己遇到的疑惑,分析题目中的问题,并简要总结java中数据类型相关的知识,供交流学习。 关键字 java, 数据类型, 默认类型,运算符优先级、类型溢出 正文 不知读者们是否会像作者同样的错以为:题目中两者没有啥区别! 由于我们在平时的编程中很少涉及类型溢出、优先级考虑等问题,加上林林总总的数据类型、包装类、又是单目运算符,又是三元运算符,脑子都绕晕了,所以忽略了这类问...

进击的NULL的博客 1998

Java实现百万级数据从Excel导入到数据库

在一个后台管理功能中,Excel导入数据是不可缺少,但是当处理大数据量的Excel文件导入时候就可能会带来一些列的问题,本文我们会分析问题产生的原因。并提供解决方案以及完整的实现代码。

小徐的博客 6775

Java导入完整版模板

1.在pom引入jra包 <!--导入导出excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> ...

weixin_44568752的博客 2990

JavaScript 中,num = num || 1 这种写法有哪些优缺点?

语法糖,等价于 if(!!num === false) num=1; 类似于java的 num=null ? 1 : num     以下是来自某位知友的解答:   就是个简写法而已。好处就是短一点,但是其实坏处更大。 你是否确切知道什么时候会变成1? ——当num有值为0时,也会变成1!——当num有值为NaN时(很可能意味着前面的计算出错了),也会变成1!——另外当传入的值类型错误时,本来...

weixin_33749242的博客 323

java实现导入word模板导入试题

最近有一个项目需要将一个word文档中的试题数据导入,并存储到数据库中。试题类型包括:单选题、多选题、判断题、填空题、简答题。支持图片导入(我的这篇是借鉴)这两位大神的。废话不多说,进入正题,直接上代码。

qq_27991253的博客 2661

idea新建父工程和添加导入新模块的步骤

如何在idea中新建一个父工程,然后在父工程下新建多个微服务模块或者java模块?

qq_30166465的博客 1078

java模块化

模块化前言 前言 模块化(Module),项目名字叫做Jigsaw(拉锯),拉了多年的锯,终于把java锯成了一个个模块。到jdk1.8,jre的rt.jar已经有65M了,运行一个HelloWorld也需要近百兆的JRE环境。还有就是jar hell。就是类路径重复造成的 ......

希望代码永远不会crash,飞机更应该平安 3085

Java 9 模块化(Modularity)

JDK9的发布一直在推迟,终于在2017年9月21日发布了。下面是JDK9的几个下载地址: JDK9.0.1 Windows-x64下载地址 Oracle Java 官网下载地址 OpenJDK 9官网 OpenJDK JDK9下载 从安装的JDK9文件夹下会发现没有jre文件夹了,并且多了一个jmods文件夹,想想为什么? 传统的jar文件是在运行时runtime使用,而 .jmod...

後雪寒的专栏 8736

Java类导入机制详解与最佳实践

在Java编程中,包(package)和类导入(import)是代码组织的核心机制。包通过命名空间管理类文件,而导入语句则建立了类之间的访问桥梁。从技术实现看,import本质是编译期的符号解析,不会影响运行时性能。合理使用单类型导入能提升代码可读性,而静态导入则优化了工具类调用的便利性。在企业级开发中,结合Maven/Gradle管理依赖,配合IDE的自动导入功能,可以高效处理第三方库导入与依赖冲突。特别是在模块化系统(JPMS)和微服务架构下,精确控制类可见性成为保障系统安全的重要手段。

weixin_30983353的博客 142

多思计算机组成原理实验:模型机课程设计

计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰

Nick的博客 2万+
上一篇: java面试那件小事
下一篇: 菜鸟进阶必杀技(Ⅱ)——java基础知识自测篇
v-AUGUST-v
博客等级 码龄17年 117粉丝 27原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值