每日一题总结 2020.02.06-2020.02.16-程序员宅基地

技术标签: 面试总结  牛客网每日一题  

  • 8种基本类型变量:

boolean 1字节
byte 1字节
short 2字节
char 2字节
int 4字节
float 4字节
double 8字节
long 8字节

  byte b1=1,b2=2,b3,b6;
  final byte b4=4,b5=6;

     当 short、byte、char在进行运算时,会自动转化成int类型。 因此 b3=b1+b2,编译出错,因为会先将b1、b2这两个byte类型的变量转化成int类型运算,赋给b4时要强转成int才行: b3=(byte)(b1+b2)。其他变量在进行运算时遵循以下优先级
byte<short<char<int<long<float<double ( 高 )
     而对于final 类型的常量,有常量转化优化机制:两个常量进行运算时不会自动转化,b4+b5的结果还是byte类型。
    常量+非常量时,比如b1+b4 ,b1、b4都会转化成int再运算。

  • 关于异常处理机制
InputStream in=new FileInputStream( ... );

//1
code that might throw exception
//2

}
catch(IOException e)
{
    
//3
show error message

//4
}
finally
{
    
//5
in.close();

在上面这段代码中,有下列 3 种情况会执行finally子句:
1)代码没有抛出异常。
不管是否有异常被捕获,finally子句中的代码都被执行。
在这种情况下,程序首先执行 try 语句块种的全部代码,然后执行 finally 子句中的代码。随后,继续执行 try 语句块之后的第一条语句。
1、2、5、6。

2)抛出一个在catch子句中捕获的异常。
比如上述例子的 IOException。在这种情况下,程序将执行try语句块中的所有代码,直到发生异常为止。此时,将跳过try语句块中的剩余代码,转去执行与该异常匹配的catch子句中的代码,最后执行finally子句中的代码。
如果catch子句没有抛出异常,程序将执行try语句块之后的第一条语句:
1、3、4、5、6。
如果catch子句有抛出异常,异常将会被抛回到这个方法的调用者。
1、3、5。
当代码抛出一个异常时,就会终止方法中剩余代码的处理,并退出这个方法的执行。
所以不执行6。

3)代码抛出了一个异常,但这个异常不是由catch块捕获的。
在这种情况下,程序将执行try语句块中的所有语句,直到有异常被抛出为止。此时,将跳过 try 语句块中的剩余代码,然后执行 finally 子句中的语句,并将异常抛给这个方法的调用者。
1、5。

在方法体声明 throws,在该方法出现异常时,会向调用处抛出该异常,即new 异常对象,在控制台打印异常信息( 包括异常的类型和堆栈的内容 ),而后该方法会终止执行,不能继续向下执行了。

  • 虚拟机中的堆、栈
    (1)

    JVM所管理的内存中最大的一块。
    被所有线程共享,在JVM启动时创建.
    所有对象实例和数组都要在堆上分配内存。
    方法区:
    ”非堆“。
    存储已被虚拟机加载的信息、常量、静态变量、即时编译器编译后代码。
    (2)
    虚拟机栈:
    Java方法执行的内存模型。
    每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等,方法从调用到执行完成的过程,对应一个栈帧从虚拟机中入栈到出栈的过程。
    本地方法栈:
    本地方法… …

  • 抽象方法:
    ”抽象方法充当着占位的角色,它们的具体实现在子类中。“
    而final修饰的方法不能被覆写。所以final和abstract不能同时修饰一个方法。

(抽象类不能被实例化。)

  • 装饰模式 ~ 扩展性。

2020.02.07

  • ArrayList arraylist=new ArrayList (20)中的arraylist扩充了0次。
    有参构造传入初始容量时,是直接分配initialCapacity大小的数组空间的。
public ArrayList(int initialCapacity) {
    
        if (initialCapacity > 0) {
    
            this.elementData = new Object[initialCapacity];
        } else if (initialCapacity == 0) {
    
            this.elementData = EMPTY_ELEMENTDATA;
        } else {
    
  throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity);
        }
    }
  • CallableStatement–>(继承于)PreparedStatement–>Statement–>Wrapper。

  • List、Set都是接口。
    HashSet继承于AbsractSet。
    WeakHashMap继承于AbstractMap 。

  • 标识符由数字、字母、_、$组成。不能包含关键字(小写)。

  • 主方法中的 String 类型的 args 数组是专门用来接收命令行参数的。
    System.out.print(args.length); (未通过命令行传入参数时)运行结果为 0。

public class f{
    
public static void main(String[] args)
{
    
for(int i=0;i<3;i++)
System.out.print(args[i]+" ");
}
}

    对于上述的类 f 如果在 javac 编译后,运行时传入 a b c参数,java f a b c ,结果如下:
在这里插入图片描述
而对于这样的 f 类:

public class f{
    
public static void main(String[] args)
{
    
String foo1=args[1];
String foo2=args[2];
String foo3=args[3];
}
              }

    同样是编译后运行java f a b c在这里插入图片描述
    程序运行错误,因为传入 3 个字符串参数,那么args数组的长度就为 3 ,而主方法中下标到了 [3] ,所以下标异常。

  • 关于类方法(静态方法):
    (1)在类方法中绝对不能调用实例方法。 ×
        可以在类方法中创建实例对象,然后通过实例对象调用实例方法。(~ 联想主方法 p s v m)
    (2)在类方法中只能调用本类的类方法。 ×
    (不知道应该改为:可以调用其他类的类方法 ???
                    还是改为 可以调用本类的实例方法)

(类方法中不能出现 this )

- Object类常见方法:
clone()
equals()
finalize()【在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。】
hasCode()
toString()
wait()
notify() /notifyAll()

          

- " && " 是短路与

  • "||"是短路或。
              

  • 接口可以用 public abstract 修饰。
    (可以理解成:接口是特殊的抽象类。)
    接口中的方法默认是 public abstract ,jdk 1.8之后允许 default (真的写上去) 、static修饰方法。
    接口中的变量默认是public static final,需要初始化。

  • JRE判断程序是否执行结束的标准是:
    所有的前台线程执行完毕。
    前台线程——用户线程。
    后台线程——守护线程。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41750142/article/details/104199890

智能推荐

Component name “About“ should always be multi-word.(vue/multi-word-component-names)_"component name \"about\" should always be multi-w-程序员宅基地

export default { // eslint-disable-next-line vue/multi-word-component-names name: "Home",}因为起名时没有使用大驼峰和横线拼接单词,所以报错,在idea中,我发现可以在name:“home”,这一句上面添加 // eslint-disable-next-line vue/multi-word-component-names这一句话,双斜杠也必须加上,不要隔行,紧挨着,向上面代码写的那样,这样可以不报错。._"component name \"about\" should always be multi-word vue/multi-word-component-"

Java实现 LeetCode 406 根据身高重建队列_根据身高重建队列java-程序员宅基地

406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [..._根据身高重建队列java

npm修改全局下载和缓存路径-程序员宅基地

在安装好node.js 和npm包管理工具后。使用npm config ls查看,安装完成后的路径。AppData 是隐藏文件夹, 在控制面板,设置显示隐藏文件,才看得到。为了保留C盘的剩余空间,有必要,把 npm的 global 路径修改到其他盘符下。npm config set cache "D:\Program Files\npm-c..._npm下载安装包时指定缓存目录去下载

ASP.NET中LINQ的基本用法_linq语言,连接asp。-程序员宅基地

此Demo只是一个极其简单的LINQ查询Demo一个类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1{ public class NBA_Star ..._linq语言,连接asp。

关于block内存问题的分析-程序员宅基地

话不多说, 先根据代码结果看block到底在内存的哪个分区:一:MRC下, 声明的block实现部分,没有引入外界的任何局部变量int main(int argc, const char * argv[]) { @autoreleasepool { //定义bolck void(^myBlock)() = ^{

Java实现 LeetCode 819 最常见的单词(暴力)_code着真正单词-程序员宅基地

819. 最常见的单词给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = “Bob hit a ball, the hit BALL flew far after it was hit.”banned = [“hit”]输出: “ball”解释:“_code着真正单词

随便推点

差模信号、共模信号、共模抑制比的概念_ccmr是cop compare-程序员宅基地

共模信号与差模信号辨析差模又称串模,指的是两根线之间的信号差值;而共模噪声又称对地噪声,指的是两根线分别对地的噪声。对于一对信号线A、B,差模干扰相当于在A与B之间加上一个干扰电压,共模干扰相当于分别在A与地、B与地之间加上一个干扰电压;像平常看到的用双绞线传输差分信号就是为了消除共模噪声,原理很简单,两线拧在一起,受到的共模干扰电压很接近, Ua - Ub依然没什么变化,当然这是_ccmr是cop compare

Eigen(5)Array类和元素级操作-程序员宅基地

0. 为什么使用Array 相对于Matrix提供的线性代数运算,Array类提供了更为一般的数组功能。Array类为元素级的操作提供了有效途径,比如点加(每个元素加值)或两个数据相应元素的点乘。1. Array Array是个类模板(类似于Matrx),前三个参数是必须指定的,后三个是可选的,这点和Matrix是相同的。 Array&lt;typename Sc...

iOS开发之TextField和TextView限制表情输入_ios textfield对食物emoji输入做限制-程序员宅基地

#一、通过判断当前的输入模式禁止表情输入- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (textField == self.searchText) { if (string.length == 0) return YES; //不支持系统表情的输入 _ios textfield对食物emoji输入做限制

IM系统四大基本特性_im能力-程序员宅基地

1.实时性:保证消息实时触达是互动场景的必备能力。对于一个实时消息系统,“实时”二字很好地表达了这个系统的基本要求。通过微信和你的好友聊天,结果等半天对方才收到,基本上也没有意愿聊了;直播场景下,如果主播的互动消息房间里的粉丝要等很长时间才能收到,也很难让粉丝们有积极参与的欲望。实时性分为:短轮询,长轮询,WebSocket(长链接)。2.可靠性:“不丢消息”和“消息不重复”是系统值得信赖..._im能力

通过网页或者移动设备链接跳转qq(tim)添加好友(群)_vue移动端怎么写跳转qq加群-程序员宅基地

首先需要去qq群官方,然后点记加群组件,然后选择群,复制对应的代码即可登录到QQ群官网点击加群组件选择群,选择网页还是移动设备 复制代码示例:<html><head> <title>加群组件</title></head><body> <div> <a target="_blank" href="tencent://message/?uin=你的QQ号码">添加好友</a&g_vue移动端怎么写跳转qq加群

宝塔mysql管理员初始密码_宝塔面板忘记管理员用户名密码简单有效解决方法_大唐驱魔师的博客-程序员宅基地

有些学做网站学员使用服务器建网站,并且安装了宝塔面板,建设好之后需要登录后台,但是有时会忘记账号和密码,应该怎么办?或者是在使用的过程中忘记了登陆密码,应该怎么解决呢?下面介绍一下宝塔面板管理员密码忘记解决方法。方法/步骤1,忘记密码之后,在阿里云服务器中找到对应的实例,进入‘远程连接’。2. 选择“Workbench远程连接”;3、填写操作系统用户名对应的密码,如果这个密码忘记,可以在“密码/密..._宝塔mysql密码