-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain2.java
422 lines (374 loc) · 14.3 KB
/
Main2.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main2
{
public static void main(String[] args) throws UnsupportedEncodingException
{
// HangSanXuat hang1 = new HangSanXuat("yamaha","Japan");
// HangSanXuat hang2 = new HangSanXuat("ford","US");
// PhuongTienDiChuyen maybay= new MayBay("A",hang1);
// PhuongTienDiChuyen oto= new XeOto("B",hang2);
// PhuongTienDiChuyen xedap= new Xedap(hang1);
// System.out.println(maybay.layVanToc());
// System.out.println(oto.layVanToc());
// System.out.println(xedap.layVanToc());
// System.out.println(maybay.loaiPhuongTien);
//------------------------------------------------------------------------------------
// Java 46. Hiểu rõ về INTERFACE trong lập trình Java | Phần 2
// Sử dụng Interface là do trong java không có đa kế thừa
// nên Interface tượng trưng cho đa kế thừa trong jvaa
// tất cả các operation trong Interface đều là các abstract,không có tham số truyền vào chỉ có các operation
// cách gọi của interface cũng khác vói abstract
// Nếu gọi ở trong hàm mà nó implements luôn thì cách gọi sẽ giống như abstract
// interface luôn ở dạng public
// CasioFX500 fx500 =new CasioFX500();
// Vinacal500 vn500 =new Vinacal500();
// System.out.println(fx500.cong(4,2));
// Phanmemmaytinh pmmt = new Phanmemmaytinh() ;
// System.out.println(pmmt.cong(6,8));
// pmmt.sapxepgiam();
//------------------------------------------------------------------------------------
// Java 47. Hiểu rõ về Gói - Package trong lập trình Java | Phần 2
// package giống như thư mục trong Java , tên gói phải ghi chữ thường
//------------------------------------------------------------------------------------
// Java 48. Phân biệt điều khiển public, protected, private | Phần 2
//------------------------------------------------------------------------------------
// Java 49. Xử lý chuỗi trong lập trình Java | Phần 1
Scanner sc = new Scanner(System.in);
// System.out.println("Nhap vao chuoi");
// String s =sc.nextLine();
// // Hàm length() : lấy độ dài
// // ứng đụng ( đặt mật khẩu ít nhất 8 kí tự )
// System.out.println("length() : " + s.length());
// Hàm charAt( vị trí ) : lấy kí tự tại vị trí trong chuỗi
// Ứng dụng kiểm tra số điện thoại, mật khẩu phải có chữ in hoa đầu tiên
// for( int i = 0; i<s.length(); i++ )
// {
// System.out.println("ki tu tai vi tri " + i + " la : " + s.charAt(i));
// }
// // hàm getChars( vị trí bắt đầu, vị trí kết thúc, mảng mới , vị trí bắt đầu của mảng)
// // lấy các kí tự trong mảng copy vào 1 mảng mới
// char[] a = new char[10] ;
// s.getChars(2, 5, a, 0);
// // length là 1 thuộc tính của mảng ( không phải hàm như ở trên)
// for( int i = 0; i < a.length; i++ )
// {
// System.out.println("Gia tri cua mang tai " + i + " la : " + a[i]);
// }
// // hàm getBytes() : chuyển kí tự về bảng mã ASCII
// byte[] b = s.getBytes("UTF-8"); //hàm b hiện là hàm có các kí tự đã được chuyển thành ASCII
// // byte[] b = s.getBytes("UTF-16");
// for(byte i : b) //foreach (<kiểu kí tự> tên biến chạy : tên mảng) : nó sẽ tự chạy hết mảng
// {
// System.out.println(i);
// }
//------------------------------------------------------------------------------------
// Java 50. Xử lý chuỗi trong lập trình Java | Phần 2
// Hàm equals() : so sánh 2 chuỗi ( phân biệt chữ hoa)
// String s1 = "gg";
String s1 = new String("gg");
String s2 = "GG";
String s3 = "gg";
// System.out.println("s1 equals s3 " + s1.equals(s3));
// System.out.println("s1 equals s2 " + s1.equals(s2));
// // hàm equalsIgnoreCase : so sánh 2 chuỗi ( không phân biệt chữ hoa)
// System.out.println("s1 equalsIgnoreCase s2 " + s1.equalsIgnoreCase(s2));
// hàm compareTo : so sánh > < =
// ứng dụng : dùng để sắp xếp danh sách
// Âm : <
// Dương : >
// Không : =
// str1.compareTo(str2) : str 1 có > < = str2 không
// System.out.println("s1 compareTo s2 : " + s1.compareTo(s2));
// // Hàm compareToIgnoreCase : không phân biệt chữ hoa
// System.out.println("s1 compareToIgnoreCase s2 : " + s1.compareToIgnoreCase(s2));
// // Hàm regionMatches : so sánh một đoạn
// // regionMatches(in hoa hay không ,từ , chuỗi , đến , độ dài)
// boolean ss = s1.regionMatches(false, 0, s2, 0, 1);
// System.out.println("so sanh s1 tu 0 den 1 voi s2 : " + ss);
// Hàm startsWith : kiểm tra chuỗi bắt đầu bằng 1 chuỗi do mình quy định sẵn
// String sdt ="012345";
// System.out.println(sdt.startsWith("012"));
// System.out.println(sdt.startsWith("013"));
// // Hàm endsWith : kiểm tra chuỗi kết thúc bằng 1 chuỗi do mình quy định
// String fl = "user.c";
// System.out.println(fl.endsWith("css"));
//------------------------------------------------------------------------------------
// Java 51. Xử lý chuỗi trong lập trình Java | Phần 3
// String ss1 = "hello world";
// String ss2 = "hello";
// String ss3 = "Hi";
// // Hàm indexOf : tìm kiếm chuỗi và kí tự
// // str1.indexOf(str2, vị trí bắt đầu tìm) : kiểm tra str2 có là con của str1 không , nếu có trả về vị trí bắt đầu
// // nếu ra 1 giá trị âm tức là không tìm thấy str2 trong str1
// System.out.println(ss1.indexOf(ss2));
// // Hàm lastIndexOf : tìm kiếm từ phải sang trái
// // str1.lastIndexOf(str2, vị trí bắt đầu)
// System.out.println(ss1.lastIndexOf(ss3,1));
//------------------------------------------------------------------------------------
// Java 52. Xử lý chuỗi trong lập trình Java | Phần 4
// hàm concat
// String str1 = "Hello";
// String str2 = " world!";
// String str3 =str1.concat(str2);
// String str4 =str1 + str2 ;
// System.out.println("chuoi s3 duoc noi tu s1 voi s2 bang concat la : " + str3);
// System.out.println("chuoi s4 duoc noi tu s1 voi s2 bang dau ( + ) la : " + str3);
// // hàm replace
// String str5 = "Hello world";
// String str6 = str5.replace("Hello","chao");
// System.out.println(str6);
// // hàm tolLowerCase : chuyển về chữ thường
// // hàm toUpperCase : chuyển về chữ hoa
// String str7 = str5.toLowerCase();
// System.out.println(str7);
// String str8 = str5.toUpperCase();
// System.out.println(str8);
// // hàm trim : xóa khoảng tắng dư thừa
// String str9 = " hello";
// System.out.println(str9.trim());
// // hàm substring : cắt chuỗi
// // substring(vị trí đầu, vị tría cuối)
// String str10 = "Xin chao cac ban ";
// System.out.println(str10.substring(4, str10.length()));
// Lưu ý : do length là hàm của chuỗi( không phải thuộc tính như của mảng) nên là length()
//------------------------------------------------------------------------------------
// LIST
// //Creating a List of type String using ArrayList
// List<String> list=new ArrayList<String>();
// //Creating a List of type Integer using ArrayList
// List<Integer> list=new ArrayList<Integer>();
// //Creating a List of type Book using ArrayList
// List<Book> list=new ArrayList<Book>();
// //Creating a List of type String using LinkedList
// // List<String> list=new LinkedList<String>();
// list.add("Mango");
// list.add("Apple");
// list.add("Banana");
// list.add("Grapes");
// Array.asList : cách khai báo list từ java 9 trở xuống
// List<Integer>arrayaslist = Arrays.asList(1,2,3,4); //cách khai báo list từ java 9 trở xuống
List<String>arrayaslist = Arrays.asList("uu","66","ss","ll");
//List.of() cách khai báo list trong java 9
// List<Integer> arrayaslist = List.of (1,2,3,4);
// lệnh set : thay đổi số trong danh sách
arrayaslist.set(1,"ô");
System.out.println(arrayaslist);
}
// Java 59. Kiểu dữ liệu Enum trong lập trình Java
// Enum là kiểu tập hợp nhiều class hữu hạn
}
//------------------------------------------------------------------------------------
// Java 45.
// Lưu ý : super luôn phải ở đầu
// super giúp cho mình có thể nhập tham chiếu vô luôn
// hangsx không nhập tham chiếu vô được là do nó có kiểu "HangSanXuat"
// "HangSanXuat" (kiểu này do người dùng nhập vào class "HangSanXuat")
abstract class PhuongTienDiChuyen
{
protected HangSanXuat hangsx;;
protected String loaiPhuongTien;
public PhuongTienDiChuyen(String loaiPhuongTien,HangSanXuat hang)
{
this.loaiPhuongTien = loaiPhuongTien;
this.hangsx= hang;
}
public String layTenHangSanXuat()
{
return hangsx.getHangsanxuat();
}
public void batDau()
{
System.out.println("batDau");
}
public void tangToc()
{
System.out.println("Tang toc");
}
public void tatMay()
{
System.out.println("tat may");
}
public void vanToc()
{
System.out.println("van toc ");
}
public abstract double layVanToc();
}
class MayBay extends PhuongTienDiChuyen
{
private String loaiNhienLieu;
public MayBay(String loaiNhienLieu, HangSanXuat hangsx)
{
// Lưu ý : super luôn phải ở đầu
// super giúp cho mình có thể nhập tham chiếu vô luôn
// hangsx không nhập tham chiếu vô được là do nó có kiểu "HangSanXuat"
// "HangSanXuat" (kiểu này do người dùng nhập vào class "HangSanXuat")
// Muốn tra ra tên thì dùng
// System.out.println(maybay.loaiPhuongTien);(do public nên làm được vậy)
super("Maybay",hangsx);
this.loaiNhienLieu = loaiNhienLieu;
}
public double layVanToc()
{
return 200;
}
}
class HangSanXuat
{
private String tenHangSanxuat;
private String tenquocgia;
public HangSanXuat(String tenHangSanxuat,String tenquocgia)
{
this.tenHangSanxuat = tenHangSanxuat;
this.tenquocgia = tenquocgia;
}
public String getHangsanxuat()
{
return this.tenHangSanxuat ;
}
public void setHangsanxuat(String hangsanxuat)
{
this.tenHangSanxuat = hangsanxuat;
}
}
class XeOto extends PhuongTienDiChuyen
{
private String loaiNhienlieu;
public XeOto(String loaiNhienlieu,HangSanXuat hangsx)
{
super("XeOto",hangsx);
this.loaiNhienlieu = loaiNhienlieu;
}
public String layTenHangSanXuat(HangSanXuat hangsx)
{
return hangsx.getHangsanxuat();
}
public double layVanToc()
{
return 20;
}
}
class Xedap extends PhuongTienDiChuyen
{
public Xedap(HangSanXuat hangsx)
{
super("Xedap",hangsx);
}
public String layTenHangSanXuat(HangSanXuat hangsx)
{
return hangsx.getHangsanxuat();
}
public double layVanToc()
{
return 10;
}
}
//------------------------------------------------------------------------------------
// Java 46
interface Maytinhbotui
{
public double cong(double a, double b);
public double tru(double a,double b);
public double nhan(double a,double b);
public double chia(double a,double b);
}
class CasioFX500 implements Maytinhbotui
// không có constructor thì mặc định là có constructor rỗng
// Constructor dùng để lấy dữ liệu hằng số
{
// @Override
public double cong(double a,double b)
{
return a+b;
}
public double tru(double a,double b)
{
return a-b;
}
public double nhan(double a,double b)
{
return a*b;
}
public double chia(double a,double b)
{
return a/b;
}
}
class Vinacal500 implements Maytinhbotui
{
// @Override
public double cong(double a,double b)
{
return a+b;
}
public double tru(double a,double b)
{
return a-b;
}
public double nhan(double a,double b)
{
return a*b;
}
public double chia(double a,double b)
{
return a/b;
}
}
interface Sapxep
{
public void sapxeptang();
public void sapxepgiam();
}
class Sapxepchen implements Sapxep
{
public void sapxepgiam()
{
System.out.println("sapxepchen : giam");
}
public void sapxeptang()
{
System.out.println("sapxepchen : tang");
}
}
class Sapxepchon implements Sapxep
{
public void sapxeptang()
{
System.out.println("sapxepchon : tang");
}
public void sapxepgiam()
{
System.out.println("sapxepchon : giam");
}
}
class Phanmemmaytinh implements Maytinhbotui , Sapxep
{
// kế thừa dưới dạng override (ghi đè)
public double cong(double a,double b)
{
return a+b;
}
public double tru(double a,double b)
{
return a-b;
}
public double nhan(double a,double b)
{
return a*b;
}
public double chia(double a,double b)
{
return a/b;
}
public void sapxeptang()
{
System.out.println("sapxepchon : tang");
}
public void sapxepgiam()
{
System.out.println("sapxepchon : giam");
}
}