사설
구글은 최근 총회는 코 틀린 될 널리 자바에 비해 장점을 강조, 결국 미래의 응용 프로그램을 확장됩니다, 그래서 우리는 코 틀린를 배울 수있는 유일한 방법이되었다 강조했다. 어느 날 거물까지이 생각은 구덩이 이하 밟았, 또는 우리가 너무 늦게, 결국 배울 후 개발에 사용하고있는 경우에, 우리는 여전히 시간이 에너지 배우고 실용적인 지식의 발전에 우선 순위를 부여 왼쪽으로 지금 우리는 다른 뒤에 파업 또는 따를 수 있습니다.
사물
자바 표현
MainActivity.this
코 틀린 문구
this@MainActivity
범주
자바 표현
MainActivity.class
코 틀린 문구
MainActivity::class.java
상속
자바 표현
public class MainActivity extends AppCompatActivity {
}
코 틀린 문구 (코 틀린에서이 클래스에서 상속 개방 키워드를 수정해야합니다)
class MainActivity : AppCompatActivity() {
}
변수
자바 표현
Intent intent = new Intent();
코 틀린 문구
var intent = Intent()
상수
자바 표현
final String text = "";
코 틀린 문구
val text = ""
const 정적
자바 표현
public class MainActivity extends AppCompatActivity {
static final String text = "";
}
(상기 카테고리에 정의 된 정적 변수를 만들어 주) 코 틀린 문구
const val text = ""
class MainActivity : AppCompatActivity() {
}
정의 방법
자바 표현
public void test(String message) {
}
코 틀린 문구 (같은 효과 단위 무효)
fun test(message : String) : Unit {
}
// 在 Kotlin 可以省略 Unit 这种返回值
fun test(message : String) {
}
오버로드 방법
자바 표현
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
코 틀린 문구
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
기본 데이터 유형
자바 표현
int i = 1;
long l = 2;
boolean b = true;
float f = 0;
double d = 0;
char c = 'A';
String s = "text";
코 틀린 문구
var i : Int = 1
var l : Long = 2
var b : Boolean = true
var f : Float = 0F
var d : Double = 0.0
var c : Char = 'A'
var s : String = "text"
// 更简洁点可以这样,自动推倒类型
var i = 1
var l = 2
var b = true
var f = 0F
var d = 0.0
var c = 'A'
var s = "text"
비교 유형
자바 표현
if ("" instanceof String) {
}
코 틀린 문구
if ("" is String) {
}
변환 작업
자바 표현
int number = 100;
System.out.println(String.format("商品数量有%d", number));
코 틀린 문구
var number = 100
println("商品数量有${number}")
// 换种简洁的写法
var number = 100
println("商品数量有$number")
// 如果不想字符串被转义可以使用\$
var number = 100
println("商品数量有\$number")
문자열 비교
자바 표현
String s1 = "text";
String s2 = "text";
if (s1.equals(s2)) {
}
코 틀린 문구 (코 틀린는 비교, 문자열 비교를 최적화하거나 다른 유형의 객체를 사용하여 작성하는 방법과 동일 경우)
var s1 = "text"
var s2 = "text"
if (s1 == s2) {
}
배열
자바 표현
int[] array1 = {1, 2, 3};
float[] array2 = {1f, 2f, 3f};
String[] array3 = {"1", "2", "3"};
코 틀린 문구
val array1 = intArrayOf(1, 2, 3)
val array2 = floatArrayOf(1f, 2f, 3f)
val array3 = arrayListOf("1", "2", "3")
순환
자바 표현
String[] array = {"1", "2", "3"};
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
코 틀린 문구
val array = arrayListOf("1", "2", "3")
for (i in array.indices) {
println(array[i])
}
첨자주기
자바 표현
String[] array = {"1", "2", "3"};
for (int i = 1; i < array.length; i++) {
System.out.println(array[i]);
}
코 틀린 문구 (코 틀린에서 언급 한 부분의 표현)
val array = arrayListOf("1", "2", "3")
for (i in IntRange(1, array.size - 1)) {
println(array[i])
}
// 换种更简洁的写法
val array = arrayListOf("1", "2", "3")
for (i in 1..array.size - 1) {
println(array[i])
}
// 编译器提示要我们换种写法
val array = arrayListOf("1", "2", "3")
for (i in 1 until array.size) {
println(array[i])
}
수석주기
자바 표현
String[] array = {"1", "2", "3"};
for (String text : array) {
System.out.println(text);
}
코 틀린 문구
val array = arrayListOf("1", "2", "3")
for (text in array) {
println(text)
}
결정
자바 표현
int count = 1;
switch (count) {
case 0:
System.out.println(count);
break;
case 1:
case 2:
System.out.println(count);
break;
default:
System.out.println(count);
break;
}
코 틀린 문구
var count = 1
when (count) {
0 -> {
println(count)
}
in 1..2 -> {
println(count)
}
else -> {
println(count)
}
}
var count = 1
// 换种更简洁的写法
when (count) {
0 -> println(count)
in 1..2 -> println(count)
else -> println(count)
}
생성자
자바 표현
public class MyView extends View {
public MyView(Context context) {
this(context, null);
}
public MyView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
코 틀린 문구
class MyView : View {
constructor(context : Context) : this(context, null) {
}
constructor(context : Context, attrs : AttributeSet?) : this(context, attrs, 0) {
}
constructor(context : Context, attrs : AttributeSet?, defStyleAttr : Int) : super(context, attrs, defStyleAttr) {
}
}
// 换种更简洁的写法
class MyView : View {
constructor(context : Context) : this(context, null)
constructor(context : Context, attrs : AttributeSet?) : this(context, attrs, 0)
constructor(context : Context, attrs : AttributeSet?, defStyleAttr : Int) : super(context, attrs, defStyleAttr)
}
// 只有一种构造函数的还可以这样写
class MyView(context: Context?) : View(context) {
}
클래스 만들기
자바 표현
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Person person = new Person("Android轮子哥", 100);
person.setName("HJQ");
person.setAge(50);
System.out.println("name: " + person.getName() + ", age: " + person.getAge());
코 틀린 문구 (메소드 세트 멤버 변수를 노출하지 않으려는 경우는 var에 발을 변경할 수 있습니다)
class Person {
var name : String? = null
get() = field
set(value) {field = value}
var age : Int = 0
get() = field
set(value) {field = value}
}
// 换种更简洁的写法
class Person(var name : String, var age : Int)
var person = Person("Android轮子哥", 100)
person.name = "HJQ"
person.age = 50
println("name: {$person.name}, age: {$person.age}")
민영화 설정 방법
자바 표현
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
private void setAge(int age) {
this.age = age;
}
}
코 틀린 문구
class Person {
var name : String? = null
private set
var age : Int = 0
private set
}
민영화 get 메소드
자바 표현
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
private String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
private int getAge() {
return age;
}
private void setAge(int age) {
this.age = age;
}
}
코 틀린 문구
class Person {
private var name : String? = null
private var age : Int = 0
}
열거
자바 표현
enum Sex {
MAN(true), WOMAN(false);
Sex(boolean isMan) {}
}
코 틀린 문구
enum class Sex (var isMan: Boolean) {
MAN(true), WOMAN(false)
}
인터페이스
자바 표현
public interface Callback {
void onSuccess();
void onFail();
}
코 틀린 문구 (코 틀린 인터페이스 방법은 자신을 달성 할 수있다, 더 이상이 입증되지 않습니다)
interface Callback {
fun onSuccess()
fun onFail()
}
익명 내부 클래스
자바 표현
new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onFail() {
}
};
코 틀린 문구
object:Callback {
override fun onSuccess() {
}
override fun onFail() {
}
}
내부 클래스
자바 표현
public class MainActivity extends AppCompatActivity {
public class MyTask {
}
}
코 틀린 문구
class MainActivity : AppCompatActivity() {
inner class MyTask {
}
}
클래스 내부 클래스는 같은 이름의 외부 변수에 접근하기
자바 표현
String name = "Android轮子哥";
public class MyTask {
String name = "HJQ";
public void show() {
System.out.println(name + "---" + MainActivity.this.name);
}
}
코 틀린 문구
var name = "Android轮子哥"
inner class MyTask {
var name = "HJQ"
fun show() {
println(name + "---" + [email protected])
}
}
추상 클래스
자바 표현
public abstract class BaseActivity extends AppCompatActivity implements Runnable {
abstract void init();
}
코 틀린 문구
abstract class BaseActivity : AppCompatActivity(), Runnable {
abstract fun init()
}
정적 변수 및 방법
자바 표현
public class ToastUtils {
public static Toast sToast;
public static void show() {
sToast.show();
}
}
합니다 (코 틀린 컴패니언 객체 호출이 실시 예에서) 코 틀린 문구
companion object ToastUtils {
var sToast : Toast? = null
fun show() {
sToast!!.show()
}
}
변수 매개 변수
자바 표현
public int add(int... array) {
int count = 0;
for (int i : array) {
count += i;
}
return count;
}
코 틀린 문구
fun add(vararg array: Int) : Int {
var count = 0
//for (i in array) {
// count += i
//}
array.forEach {
count += it
}
return count
}
제네릭
자바 표현
public class Bean<T extends String> {
T data;
public Bean(T t) {
this.data = t;
}
}
Bean<String> bean = new Bean<>("666666");
코 틀린 문구
class Bean<T : Comparable<String>>(t: T) {
var data = t
}
var bean = Bean<String>("666666")
// 换种更简洁的写法
var bean = Bean("666666")
구성 코드 블록
자바 표현
public class MainActivity extends AppCompatActivity {
int number;
{
number = 1;
}
}
코 틀린 문구
class MainActivity : AppCompatActivity() {
var number = 0
init {
number = 1
}
}
정적 코드 블록
자바 표현
public class MainActivity extends AppCompatActivity {
static int number;
static {
number = 1;
}
}
코 틀린 문구
class MainActivity : AppCompatActivity() {
companion object {
var number = 0
init {
number = 1
}
}
}
블록에있어서
자바 표현
void test(){
{
int a = 1;
}
}
코 틀린 문구
fun test() {
run {
var a =1
}
}
가시성 수정
자바 문구 (기본값은 기본값)
수정 | 효과 |
---|---|
공공의 | 모든 클래스 표시 |
보호 | 눈에 보이는 서브 클래스 |
태만 | 같은 패키지 보이는 클래스에서 |
은밀한 | 단지 자신의 클래스에 표시 |
코 틀린 문구 (기본값은 public입니다)
수정 | 효과 |
---|---|
공공의 | 모든 클래스 표시 |
내부의 | 동일한 카테고리 모듈 아래 보이는 |
보호 | 눈에 보이는 서브 클래스 |
은밀한 | 단지 자신의 클래스에 표시 |