澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2020-01-12 08:39 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

美团实习

22:讲一下习感到常编码情势?

ISO8859-1、GB2312、GBK、UTF-8、UTF-16

2.2布局函数

表明类能够富含布局函数

  • Kotlin代码
annotation class MyAnnotation(val value: Int)

//使用
@MyAnnotation(1)
class Foo {
}
  • Java代码
public @interface MyAnnotation {
    int value();
}

//使用
@MyAnnotation(1)
public class Foo {
}

评释类的结构函数只同意下列参数类型:

  • 对应于 Java 原生类型的花色(Int、 Long等);
  • 字符串;
  • 类(Foo::class);
  • 枚举;
  • 其余表明;
  • 地点已列类型的数组。
  • Kotlin中只同意用val表明参数
  • 当参数类型是别的表明时,该评释类的名字前边不能用@

故而写文的速度也只能放缓下来,临时收场《深入掌握Java设想机》的读书笔记板块,也大约把想看的章节收拾实现,后续闲时再把多余的补全;前段时间安排正是把后边Retrofit的坑填好,当然那不会是终极八个框架;周记大约不可能叫周记了,半月记?月记?不过实习学到的来看的都会在小本本里记好,差非常的少攒够了就能发出去。

31:说一下泛型原理

泛型编制程序是少年老成种通过参数化的方式将数据管理与数据类型解耦的技巧,通过对数据类型施加限制(比方Java中的有界类型)来保障数据管理的正确,又称参数类型或参数多态性。
不等的言语在落到实处泛型时使用的艺术区别,C 的模板会在编写翻译时依照参数类型的不如变化不一样的代码,而Java的泛型是生龙活虎种伪泛型,编写翻译为字节码时参数类型会在代码中被擦除,单独记录在Class文件的attributes域内,而在选用泛型处做项目检查与类型调换。

总结

讲授和反光都是累累采纳中央银行使到的技艺,而本篇小说主要比较了讲解和反光在Java和Kotlin中写法的差异。

参照他事他说加以考察文献:
Kotlin语言普通话站、《Kotlin程序开荒入门精要》

引入阅读:
从Java到Kotlin(风流倜傥)为何采用Kotlin
从Java到Kotlin(二)基本语法
从Java到Kotlin(三)类和接口
从Java到Kotlin(四)对象与泛型
从Java到Kotlin(五)函数与Lambda表达式
从Java到Kotlin(六)扩大与寄托
从Java到Kotlin(八)Kotlin的其它工夫
Kotlin学习材料汇聚


更加多精粹小说请扫描下方二维码关怀Wechat公众号"AndroidCzh":这里将长期为你分享原创小说、Android开荒经历等!
QQ交流群: 705929135

图片 1

图片 2

4: 谈谈对java多态的知晓

多态是同二个作为有着多少个例外表现方式或形态的技巧。Java的接续机制允许将指标视为本人类型恐怕其基类类型管理,这种性情就足以使得相仿份代码能够不用差其他运作在差异品类上。选用那样形式能够肃清类型之间的耦合。当使用父类替代子类出以后代码中时,父类调用同三个措施,会依据子类的两样产生不一样的效能。

1.2函数援用

  • Java代码
public class User {
    private String userName;

    public User(String userName) {
        super();
        this.userName = userName;
    }

    public void printUserName() {
        System.out.println(userName);
    }
}

//获取User对象
Class<?> clazz = Class.forName("com.demo.czh.myapplication.User");
//获取带String参数的public构造函数
Constructor c=clazz.getDeclaredConstructor(String.class);
//创建User对象的实例
User user = (User) c.newInstance("Czh");
//根据方法名"printUserName"获取 method 对象
Method method = clazz.getDeclaredMethod("printUserName");
//通过 method 调用 invoke()方法,调用User里的 printUserName
method.invoke(user);

运作代码,获得结果:

图片 3

  • Kotlin代码
class User(var userName: String) {
    fun printUserName() {
        println(userName)
    }
}

//方式一
//获取printUserName函数对象
var p = User::printUserName
//调用invoke()函数执行printUserName函数
p.invoke(User("Czh"))

//方式二
//利用Java反射机制调用getMethod()方法,并指定方法名字"printUserName"
var method = User::class.java.getMethod("printUserName")
//调用invoke()函数
method.invoke(User("Czh"))

运营代码,获得结果:

图片 4

在Kotlin中,能够用类名 八个冒号:: 函数名一向拿走那一个函数的靶子;或许利用Java反射机制调用getMethod()格局来收获函数的靶子。

援用能源文件&系统文件有三种艺术,一种是在构造文件:

2:int、char、long各占多少字节数

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

1.1类引用

  • Java代码
//方式一
Class<?> clazz = User.class;
//方式二
Class<?> clazz = Class.forName("包名.User");
  • Kotlin代码
//如果User是Kotlin的类
 var user = User::class
//如果User是Java的类
 var user = User::class.java

在Kotlin中,用类名 多少个冒号:: class(假诺是java类要在背后加上.java)表示收获这一个类的指标。

1.UI小课堂

8:抽象类的意思

在面向对象方法中,抽象类主要用以实行项目掩没。构造出多少个固定的风流倜傥组行为的空洞描述,不过那组行为却能够有私自个只怕的切实落实方式。

目录

  • 1.反射
    1.1类引用
    1.2函数引用
    1.3性质引用
  • 2.注解
    2.1注解表明
    2.2布局函数

  • 动用限定
16:系列化的点子

Serializable
Externalizable
安卓提供了Parcelable

2.注解

//擦除前class Pair<T> { private T value; public T getValue() { return value; } public void setValue { this.value = value; }}//擦除后class Pair { private Object value; public Object getValue() { return value; } public void setValue(Object value) { this.value = value; }}

集合篇

2.1讲解注明

Java评释注脚

public @interface MyAnnotation {
}

Kotlin注明注脚

annotation class MyAnnotation

解说的叠合属性能够因而用元注明标明注脚类来钦定:

  • @Target 钦点能够用该申明标明的因素的也许的类型(类、函数、属性、表明式等);
  • @Retention 钦命该表明是还是不是存款和储蓄在编写翻译后的 class 文件中,以至它在运维时是还是不是通过反射可知 (私下认可都以 true);
  • @Repeatable 允许在单个成分上反复施用同意气风发的该注解;
  • @MustBeDocumented 内定该注解是国有 API 的少年老成有的,何况应该包蕴在转换的 API 文档中显得的类或方法的签订公约中。

Java添欧元申明

@Target(ElementType.METHOD)//表示可以在方法中使用
@Retention(RetentionPolicy.RUNTIME)//表示运行时注解
public @interface MyAnnotation {
}

Kotlin增多元注解

@Target(AnnotationTarget.FUNCTION)//表示可以在函数中使用
@Retention(AnnotationRetention.RUNTIME)//表示运行时注解
annotation class MyAnnotation
7:抽象类和接口差别

抽象类是十足世襲,接口是多种贯彻。 Java中子类只好有贰个父类,而子类能够达成三个接口。
接轨抽象类表示“从属”,实现接口表示“组合”关系

接口中全部都是空虚方法,抽象类中能够有抽象方法,也可有方法体的法子。
接口中无构造方法,不可持续,可达成;抽象类可有构造方法,不可被实例化。
抽象类的聊以自慰方法无法使用private,final,static,方法无法用private,final修饰,接口的性质暗许是用public,static,final修饰,接口中方法是默许用public,abstract修饰。

1.反射

反射机制是在运维境况中,对于自由贰个类,都能够领略这么些类的具备属性和方法;对于自由三个目的,都能够调用它的大肆一个主意和特性,这种动态获取的音讯以至动态调用对象的办法的职能称为java语言的反光机制。
Kotlin中利用反射功效所需的周转时组件作为独立的 JAENCORE文件(kotlin-reflect.jar)分发。这样做是为了减削不应用反射成效的应用程序所需的运作时库的大大小小。如若用Android Studio运转Kotlin项目,经常会在成立工程时,自动引进(kotlin-reflect.jar)

  • 限定输入字符的最大数目三种办法
    • 在代码中设置EditText.setFilters()
    • 在布局中装置android:maxLength
17:Serializable 和Parcelable 的区别

Serializable接口是Java提供的一个连串化接口,它是多少个空切口,为指标提供专门的学问的系列化和反类别化操作。使用Serializable来兑现的靶子的连串化特别轻便,只须求在类的生命中钦定二个接近相面包车型大巴标志就可以自动完成默许的体系化进程。

Parcelable接口是Android提供的生龙活虎种极其用于Android应用中指标的连串化和反连串化的章程,比较于Seriablizable具有越来越好的习性。实现Parcelable接口的指标就足以兑现体系化并能够通过Intent和Binder传递。

1.3品质援引

  • Java代码
public class User {
    public String userName;
}

//获取User对象
Class<?> clazz = Class.forName("com.demo.czh.myapplication.User");
//创建User对象的实例
User user = (User) clazz.newInstance();
//获取Field对象并指定属性名为"userName"
Field field = clazz.getField("userName");
//通过set()方法给userName赋值
field.set(user, "Czh");
//通过get()方法获取userName的值
System.out.println(field.get(user));

运行代码,得到结果:

图片 5

  • Kotlin代码
class User {
    var userName: String = "Czh"
        get() = field
        set(value) {
            field = value
        }
}

//方式一
var user = User()
//获取属性对象
var userName = User::userName
println(userName.get(user))
//设置属性值
userName.set(user, "James")
//获取属性值
println(userName.get(user))

//方式二
//利用Java反射机制获取getUserName方法
var getName = User::class.java.getMethod("getUserName")
//利用Java反射机制获取setUserName方法
var setName = User::class.java.getMethod("setUserName", java.lang.String().javaClass)
//设置属性值
setName.invoke(user, "Harden")
//获取属性值
println(getName.invoke(user))

运维代码,拿到结果:

图片 6

在Kotlin中,能够用类名 四个冒号:: 属性名直接得到属性对象;或许通过Java反射机制得到属性的get/set办法来拿到或退换属性值。


忙于的干活常常地组团听个手艺共享会、抽个晚上团建俏江南、中午再来个瓜果和可爱多,偶然来个小片头曲放松一下,真的很满意了。

32:String为啥要规划成不可变的?

字符串池(String pool)的供给: 在Java中,当起先化二个字符串变量时,假使字符串已经存在,就不会制造三个新的字符串变量,而是回到存在字符串的援引。

缓存字符串hashcode码的须要: 字符串的hashcode是时常被应用的,字符串的不改变性确定保障了hashcode的值向来是同生龙活虎的,在急需hashcode时,就无需每一次都考虑,那样会异常快捷。

由于安全性酌量: 字符串常常作为网络连接、数据库连接等参数,不可变就能够保障连接的安全性。

反射和注释

  • java.lang.reflect.Member:反射操作的对象。提供八个完毕类可在运维时改善指标景况:
    • Constructor :对应类成员中的布局函数
    • Field :对应类成员中的变量
    • Method :对应类成员中的方法
18:静态属性和静态方法是还是不是足以被一而再?是还是不是能够被重写?以至原因?

能够被持续无法被重写。
原因:

(1State of Qatar静态方法和个性是归于类的,调用的时候一贯通过类名.方法名达成对,没有必要继续机制及能够调用。假如子类里面定义了静态方法和总体性,那么那时父类的静态方法或性质称之为"掩没"。假如您想要调用父类的静态方法和性情,直接通过父类名.方法或变量名完结,至于是或不是继续一说,子类是有世袭静态方法和总体性,不过跟实例方法和总体性不太意气风发致,存在"掩盖"的这种状态。
(2卡塔尔国多态之所以能够贯彻依据于继续、接口和重写、重载(世襲和重写最为重大)。有了世襲和重写就足以达成父类的引用指向区别子类的目的。重写的机能是:"重写"后子类的事情发生此前级要大于父类的优先级,可是“隐讳”是未曾那么些优先级之分的。
(3State of Qatar静态属性、静态方法和非静态的性质都得以被连续和藏身而不能够被重写,由此不可能兑现多态,不能够兑现父类的援引能够针对分化子类的目的。非静态方法能够被持续和重写,由此能够达成多态。

@*android:type/name:表示援用系统的具备资源

23:utf-8编码中的中文占多少个字节;int型多少个字节?

德文字母:
字节数 : 1;编码:GB2312
字节数 : 1;编码:GBK
字节数 : 1;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 1;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE

华语汉字:
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 2;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE

Class c1 = Test.class; Class c2 = test.getClass();// test是Test类的一个对象Class c3 = Class.forName("com.catchu.me.reflect.Test"); 
21:哪些意况下的目的会被垃圾回笼机制管理掉?

该目的的最后二个引用指向了另一个目的或null;
该目的的末梢一个援引的功用域截至;

3.一点小感悟

12:泛型中extends和super的区别

<? extends T>约束参数类型的上界:参数类型必须是T或T的子类型
<? super T> 限定参数类型的下界:参数类型必需是T或T的超类型

  • 含义:在运行景况中,对于随便三个类都能通晓它的保有属性和办法,对于其它一个对象都能够调用它的别样一个措施和总体性。
  • 功能:动态性
    • 在运行时决断自便一个类所享有的属性和章程
    • 在运转时判别放肆多个目的所属的类
    • 在运营时组织自便三个类的靶子
    • 在运转时调用任性三个指标的必定要经过的道路
    • 浮动动态代理
  • java.lang.Class:达成行反革命射的基础
    • 原因
      • JVM每成立二个类都会发生二个相应Class对象,并把它保存在同名.class文本。有关类加运载飞机制
      • Java反射包java.lang.reflect中的全部类都不曾public结构方法,只可以通过Class类拿到那个类的实例
    • 得到Class对象的章程
      • .class:通过类的类型,基本项目能够使用
      • Object.getClass():通过对象实例,注意基本数据类型不可能接纳
      • Class.forName():通过类的全限制名,注意基本数据类型不可能利用
25:Java的相当种类

极其种类比较宏大了,一句半句说不掌握 推荐那篇博客吧 http://blog.csdn.net/junlixxu/article/details/6096266

//不使用泛型需要强制转换List list = new ArrayList();list.add;String s =  list.get//使用泛型可避免强制转换List<String> list = new ArrayList<String>();list.add;String s = list.get;
14:进度和线程的分别

进度是装有一定独立功用的程序关于某些数据集合上的一遍运维活动,进度是系统举办财富分配和调节的二个单独单位.

线程是进度的叁个实体,是CPU调节和分担的为主单位,它是比进度越来越小的能独立运营的主导单位.线程自个儿基本上不享有系统能源,只具有一些在运行中必备的能源(如程序流量计,生龙活虎组贮存器和栈卡塔尔,不过它可与同属一个进程的任何的线程分享进度所负有的不论什么事能源.

经过和线程的机要分歧在于它们是不一致的操作系统能源管理艺术。进度有独立的地点空间,三个进程崩溃后,在珍惜方式下不会对其它进度发生潜移暗化,而线程只是壹个历程中的区别履行路线。线程有和谐的货仓和一些变量,但线程之间未有独立的地址空间,多少个线程死掉就也正是风姿罗曼蒂克体经过死掉,所以多进度的次序要比二十七线程的次序健壮,但在经过切换时,成本财富超级大,效用要差十分少。但对于一些必要同不平时候拓展同期又要分享某个变量的产出操作,只可以用线程,不能够用进度。

List<? extends Number> list =new ArrayList<Integer>();代表创设成分对象都以Integer的List

20:闭包和部分内部类的分别

一些内部类 即Java的中间类可以是一些的,它能够定义在多个方法照旧三个代码块之内。
闭包正是把函数以致变量包起来,使得变量的生活周期延长。

//R.style.CustomDialog<style name="CustomDialog" parent="Theme.AppCompat.Dialog"> <!-- dialog 宽度与屏幕比例--> <item name="android:windowMinWidthMinor">80%</item> <!-- dialog 背景颜色,默认是白色--> <item name="android:colorBackground">@android:color/transparent</item></style>//创建dialog时用有style参数的构造函数AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.CustomDialog);
6:什么是当中类?内部类的效益

概念在一个类的里边的类大家就叫内部类。内部类能够很好的贯彻隐蔽。日常的非内部类,是不准有 private 与protected权限的,但内部类能够。内部类具备外面类的全部因素的拜会权限,能够兑现多种世袭,能够制止改进接口而达成同三个类中两种同名方法的调用。

a.泛型

19:静态内部类的布署意图

静态内部类平日只为所在的外部类应用,且从未须要单独设计为三个类公事。

  • 代码设置,特别注意以下代码必供给在Dialog.show()之后
5: String、StringBuffer、StringBuilder区别

String对象意气风发旦创造不可改动,对String的别样操作都不会影响原对象。
StringBuffer与StringBuilder存款和储蓄的剧情是足以转移的。
StringBuilder是线程不安全的,StringBuffer带有synchronized关键字是线程安全的。

//设置字体颜色mTextView.setTextColor(getResources().getColor(R.color.colorPrimary));//如果R.color.colorPrimary对应颜色是#FF0000,那么等效写法为mTextView.setTextColor(Color.parseColor("#FF0000"));
1:Java中==和equals()和hashCode()的区别

==在可比基本数据类型时相比较的是值,而在相比援用类型的多少时相比的是援用的地点,即比较八个援引是不是针对同贰个对象。

equal(卡塔尔国是java.lang.Object的格局,暗中同意与==相比较艺术相通,能够被程序猿重写该措施达成自定义相比较艺术。

hashCode(卡塔尔(قطر‎方法给目的回来一个hash code值当多少个指标相等时,hashcode一定肖似,可是反过来不自然创建。重写equal方法时也要重写hashcode方法。

越来越多收获情势见Java反射

本着Java面试题部分共整合治理了三篇:

b.EditText有光标不弹出软键盘

29:说说您对Java评释的精通

宣示在包、类、字段、方法、局地变量、方法参数等的后面,用来对那个因素举办认证,注释。

:表示引用大旨属性

15:final,finally,finalize的区别

final 修饰对象不可改动

finally平日和try catch搭配使用,保证不管有未有产生至极,能源都能够被放飞(释放连接、关闭IO流)。

finalize是object类中的叁个方法,子类能够重写finalize(卡塔尔国方法完成对能源的回笼。垃圾回笼只担任回笼内部存款和储蓄器,并不肩负财富的回笼,财富回笼要由技师实现,Java虚构机在垃圾回笼在此之前会先调用垃圾对象的finalize方法用于使对象释放能源(如关闭连接、关闭文件),之后才开展垃圾回笼,那几个方法平时不会呈现的调用,在废品回笼时垃圾回笼器会主动调用。

  • 设置行间隔的多少个个性:
    • android:lineSpacingExtra:设置行间隔,如10dp。值为正数表示扩充行间隔,为负数表示收缩行间隔,为0则还未有转变
    • android:lineSpacingMultiplier设置行间距的倍数,如1.5。值大于1.0表示扩展行间距,小于1.0表示裁减行间距
  • 设置字间隔的质量:android:textScaleX,水平方向放大,相当于把文字增加;能够由此加空格的艺术加码字间距
11:接口的含义

A 达成抽象 。
B 标准命名,防止分化技士对同生龙活虎种操作方法的命名差别。
C 维护扩大类安全严密完毕松耦合。

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:美团实习

关键词: Java学 Hello W... Java开发那些事 澳门威利斯人 周记