Java Cơ Bản

Tổng hợp Slide bài giảng Java OOP: http://www.mediafire.com/download/o287thuwte17yyq/Sides_Java1_2013.rar

Bài tập thực hành trên lớp: http://www.mediafire.com/?ux5i1i1ug2xi3bu

Mẫu lab report: http://www.mediafire.com/?56oprnxcjguz0kk

Giáo trình chính: Sinh viên tải cuốn “Java Software Solutions – Foundations of Program Design (7th edition)

Yêu cầu đối với các sinh viên học Java 1:

-Phải có Slides bài giảng & giáo trình chính thức khi học lý thuyết

-Chuẩn bị bài học trước khi lên lớp

-Hoàn thành các bài tập được giao

-Sẽ kiểm tra bài cũ ngẫu nhiên để lấy điểm cộng quá trình

Chi Tiết bài giảng Java1 hàng tuần:

Tuần
số

NỘI DUNG BÀI GIẢNG

SỐ TIẾT


THUYẾT

THỰC
HÀNH

BÀI
TẬ P

KIỂM
TRA

1

Objects and Primitive data–      Introduce the Java programming language.–      Java Compilation and execution.

–      Predefined objects

–      Primitive data

–      The declaration and use of variables

–      Expressions and operator precedence

–      Class libraries

3

6

2

Program statement–      The flow of control through a method–      Decision-making statements

–      Operators for making complex decisions–      Repetition statements

–      Software development stages

3

6

3

Writing class–      Class declarations–      Method declarations

–      Instance variables

–      Encapsulation

–      Method overloading

3

6

4

Enhancing class–      Object references and aliases–      Passing objects as parameters

–      The static modifier

–      Nested classes

–      Interfaces and polymorphism

3

6

5

Array–      Array declaration and use–      Arrays of objects

–      Sorting elements in an array

–      Multidimensional arrays

–      The ArrayList class

3

6

 

Middle test

3

6

Inheritance–      Deriving new classes–      Creating class hierarchies

–      The protected modifier

–      Polymorphism via inheritance

3

6

7

Exception and I/O streams–      The try-catch statement–      Exception propagation

–      Creating and throwing exceptions

–      Types of i/o streams

–      Reading and writing text files

–      Object serialization

3

6

8

Graphical User Interfaces–      Gui infrastructure–      Java applets

–      Components and Containers

–      Layout managers–      Swing components

  • Images
  • Buttons
  • Text Fields
  • Dialog Boxes

–      Event Processing

–      Borders

–      Mouse Events

3

6

9

Graphical User Interfaces (cont.)–      Key Events–      More advanced swing components

  • File Choosers
  • Color Choosers
  • Sliders
  • Tool Tips and Mnemonics
  • Combo Boxes
  • Scroll Panes
  • Split Panes
  • JList
  • JTable
  • JTree

3

6

10

Review

3

6

Tổng cộng:

30

60

Trong sách Java Software Solution, ở cuối mỗi chương có các phần sau:

1. Sumary of key Concepts

-Seft-Review Questions

-Excercises

2. Programming Projects

-Sinh viên sau khi học xong mỗi chương, về nhà phải đọc kỹ những phần trong sách đã liệt kê ở trên. Sau đó làm tất cả các bài tập trong đó.

30 thoughts on “Java Cơ Bản”

  1. Thầy ơi .
    Làm như cô CSDL được không thầy.
    Cũng có sách 1000 trang mà chỉ cần down về đọc thôi.
    Side bài giảng thì in bên trái 3 khung , bên phải thì kẻ để ghi bài học hay chú thích.
    Như dậy sẻ đở tốn kém và giảm nặng nề cho SV rất nhiều.
    Được nha thầy.

    1. Em nên mua 1 cuốn sách, giá nó cũng không mắc lắm
      Nó cũng tiện lợi khi em không có máy tính, có thể cầm sách theo đọc và nghiên cứu bài học trong đó.
      Mỗi ngày học 1-2 môn nên cũng không nặng nề.
      Cuối mỗi chương luôn có phần ôn tập, có sách em sẽ tiện lợi trong quá trình học tập hơn.

  2. Thưa thầy ! Em xin hỏi cấu hình máy tính 32 bit và 64 bit là sao ạ? và em phải vào đâu để kiểm tra cấu hình đó của máy xem có phù hợp khi cài Java ?
    Em cám ơn thầy .
    ncth4b

    1. Em xin hỏi cái nữa là máy ở nhà em không nối mạng vậy khi em tiến hành cái đặt thì có được không ạ? có phải cần tạo 1 account không ạ?
      cảm ơn thầy!

    2. Để kiểm tra xem máy của em là 32 bits hay 64 bits em thì cách đơn giản nhất em chỉ cần bấm chuột phải vào biểu tượng Computer/ chọn Properties. Sau đó em nhìn vào mục System type; Nếu nó ghi là 32-bit Operating System thì nó là 32, ghi 64-bit Operating System thì nó là 64 bit.
      Theo Thầy biết được thì các máy tính sử dụng CPU và Operating 64 bit thì có khả năng xử lý dữ liệu lớn hơn rất nhiều so với những máy tính sử dụng 32bit.
      -Nếu như chương trình được viết hỗ trợ 64bit thì đa phần nó sẽ xử lý nhanh hơn máy 32bit với cùng tốc độ
      -Các bộ vi xử lý 64bit sẽ lưu được nhiều bộ nhớ hơn các bộ vi xử lý 32 bit. Thông thường các bộ xi xử lý 32 bit thì nó hỗ trợ tối đa 4GB tùy thuộc vào khả năng hỗ trợ của mainboard. Còn 64bit có thể hỗ trợ lên tới 1Terabyte tức là khoảng 1000GB.

  3. Thưa thầy.trong cài đặt java em lỡ tay xoá mất phần path trong của sổ Environment Variables .có cách nào lấy lại không thầy
    em cảm ơn !

    1. Em lỡ tay xóa thì tạo lại thôi, cách tạo lại biến Path y chang như cách em tạo biến JAVA_HOME, dĩ nhiên là các thông số trong Path cũ sẽ không còn, vì em không thể nhớ. Thường nó được tự động tạo ra khi chúng ta cài đặt phần mềm nào đó. Trong trường hợp của em thì bây giờ không quan tâm trước đó nó lưu cái gì, mà chỉ quan tâm tạo ra lại biến Path rồi nhập thông số vào để chạy được java command line là OK

  4. thầy ơi, em gặp trục trặc ở bài tìm Max và Min, thầy ktra dùm em xem sai chỗ nào nha thấy
    Code của em
    package chuong1.bai11;

    public class MaxMin {

    public static void main(String[] args) {
    if(args!=null && args.length>0)
    {
    System.out.println(“So N da duoc nhap”);
    String s=args[0];
    int n=Integer.parseInt(s);
    System.out.println(“Gia tri lon nhat la: ” + Max(n));
    System.out.println(“Gia tri lon nho la: ” + Min(n));

    }
    else
    {
    System.out.println(“Ban chua nhap”);
    }
    }
    public static int Max (int n)
    {
    int Max=n;
    for(int i=0;iMax)
    {
    Max=i;
    }
    return Max;
    }
    }
    public static int Min (int n)
    {
    int Min=n;
    for(int i=0;i<=n;i++)
    {
    if(i<Min)
    {
    Min=i;
    }
    return Min;
    }
    }

    }

    1. Hi Long
      Em chú ý là bài toán này phải lấy được danh sách các đối số mà người sử dụng từ command line, từ danh sách này em tìm các số lớn nhất, nhỏ nhất. Hiện giờ đoạn code của em chỉ lấy ra 1 số duy nhất vị trí đầu tiên trong dãy số nhập vào từ command line do đó đã bị sai cách giải quyết.
      Cách làm: Em chạy vòng lặp từ đầu chí cuối để lấy được các phần tử trong mảng args. Trong quá trình lặp em chọn cách ép kiểu cho đúng và dùng các phép so sánh để có thể lấy ra được MIN, MAX

      1. thầy ơi, làm sao để nó tìm đươc Max rồi nó thoát lun
        coding
        package chuong1.bai11;

        public class MaxMin {

        public static void main(String[] args) {
        if(args!=null && args.length>0)
        {
        System.out.println(“Ban da nhap day so N”);

        for (int i=0;iGTLN)
        GTLN=n;
        System.out.println(“Gia tri Max la: “+GTLN);
        }

        }
        else
        {
        System.out.println(“Ban chua nhap”);
        }
        }
        }

    1. Mình làm theo cách này:
      Khai báo min=max=0.
      Hàm “tìm min” chạy lấy từng giá trị n (kiểu int), nếu min=0 thì gán min=n, sau đó là so sánh.

  5. Thưa Thầy,
    em có đoạn code sau in ra dãy fib.
    Tới đoạn tìm vị trí k, thì em bí, thầy hướng dẫn tiếp cho em với ..

    public static void main(String[] args)
    {
    int n=0;
    int k;
    int fib2,fib=0;
    int fib1=fib2=1;

    fib=fib(n-1)+fib(n-2);
    Scanner sc=new Scanner(System.in);

    System.out.println(“Nhập n dzô “);
    n=sc.nextInt();
    System.out.println(” Dãy fib : “);
    while( n > 0 )
    {

    System.out.print(” “+fib1);

    fib2 += fib1;
    fib1 = fib2 – fib1;

    n–;
    }
    System.out.println(“”);
    for(int i=0;i<n;i++)
    {
    System.out.println("Vị trí số fib là ");
    }
    System.out.println(" Nhập vị trí cần tìm k ");
    k=sc.nextInt();
    //
    }

    1. Đây là bài tập nâng cao về Fibonacci do thầy Thanh hướng dẫn cho mình nè, hy vọng sẽ giúp ích phần nào đó cho bạn!

      public static void main(String[] args) {
      // TODO Auto-generated method stub
      System.out.println(“Trả về giá trị Fibonacci thứ k”);
      System.out.println(“Xuất dãy số Fibonacci từ 1 đến n\n”);
      int k, n;
      Scanner sc=new Scanner(System.in);
      System.out.print(“Nhập số thứ tự k: “);
      k=sc.nextInt();
      System.out.println(“Số Fibonacci tại vị trí “+k+” là: “+ham1(k));
      System.out.print(“\nNhập số Fibonacci n: “);
      n=sc.nextInt();
      ham2(n);
      }
      public static int ham1(int k) {
      if(k<=2)
      return 1;
      return ham1(k-1)+ham1(k-2);
      }
      public static void ham2(int n) {
      System.out.print("Dãy Fibonacci: ");
      for(int i=1;i<=n;i++)
      System.out.print(ham1(i)+" ");
      }

  6. Nhân dịp năm mới, em chúc thày có mùa tết hạnh phúc cùng gia đình. Thật nhiều sức khỏe để dạy dỗ lớp chúng em, như thày vẫn đang tận tụy!

  7. Thày ơi cho em hỏi, sao em nhập thông tin bằng Scanner chữ có dấu nhưng nó xuất ra chữ gì ấy. Code:

    public static void main(String[] args) {

    Scanner sc=new Scanner(System.in);
    System.out.print(“Nhập vào một dòng: “);
    String input1=sc.nextLine();
    System.out.println(input1);

    String input2=”Em bó tay rồi”;
    System.out.println(input2);
    }

    Em nhập vào “Em bó tay rồi” và nó xuất ra:

    Nhập vào một dòng: Em bó tay rồi
    Em bó tay rồi

    Em bó tay rồi

    Thày giúp em với. Em sửa hay tìm google mà không được.

  8. thầy ơi cho em hỏi: Như dưới đây phần thêm phần
    getContentPane().setLayout(new FlowLayout());
    JLabel lblTen=new JLabel(“A:”);
    JTextField txtTen=new JTextField(5);
    add(lblTen);
    add(txtTen);*/
    vào để đưa nó vào khung “Nhap 2 so a va b: “” trong phần thì làm sao vậy thầy,e cảm ơn thầy !!
    public class giaodiencongtrunhanchia extends JFrame {
    public giaodiencongtrunhanchia(){
    super(“Cong Tru Nhan Chia”);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel pnBorder=new JPanel();
    pnBorder.setLayout(new BorderLayout());

    JPanel pnNorth=new JPanel();
    pnNorth.setBackground(Color.green);
    pnBorder.add(pnNorth,BorderLayout.NORTH);
    Font ft=new Font(“Arial”,Font.BOLD,20);
    JLabel lblTitleNorth=new JLabel(“Cong Tru Nhan Chia”);
    pnNorth.add(lblTitleNorth);
    lblTitleNorth.setFont(ft);

    JPanel pnSouth=new JPanel();
    pnSouth.setBackground(Color.RED);
    pnBorder.add(pnSouth,BorderLayout.SOUTH);
    //========================
    JPanel pnWest=new JPanel();
    pnWest.setBackground(Color.WHITE);
    pnBorder.add(pnWest,BorderLayout.WEST);
    TitledBorder WestBorder=new TitledBorder(BorderFactory.createLineBorder(Color.pink),”Chon tac vu: “);
    pnWest.setBorder(WestBorder);
    JButton btnGiai=new JButton(“Giai”);
    pnWest.add(btnGiai);
    JButton btnXoa=new JButton(“xoa”);
    pnWest.add(btnXoa);
    JButton btnThoat=new JButton(“Thoat”);
    pnWest.add(btnThoat);

    JPanel pnCenter=new JPanel();
    pnCenter.setBackground(Color.WHITE);
    pnBorder.add(pnCenter,BorderLayout.CENTER);
    TitledBorder CenterBorder=new TitledBorder(BorderFactory.createLineBorder(Color.red),”Nhap 2 so a va b: “);
    //==============================================================
    /*
    getContentPane().setLayout(new FlowLayout());
    JLabel lblTen=new JLabel(“A:”);
    JTextField txtTen=new JTextField(5);
    add(lblTen);
    add(txtTen);
    */
    //==============================================================
    getContentPane().add(pnBorder);
    pnNorth.setPreferredSize(new Dimension(0,50));
    pnSouth.setPreferredSize(new Dimension(0,50));
    pnWest.setPreferredSize(new Dimension(80,0));
    }

  9. Thầy ơi em tự học java nên chưa có nhiều kinh nghiệm. Thầy cho em hỏi
    cách build ra file jar làm thế nào ạ. Em dùng netbean sau đó chọn clean and build.
    Nhưng khi được file jar thì không chạy được. Trong ứng dụng em có dùng ảnh,
    nhưng khi kiểm tra file jar thì không có. Vậy thầy có thể hướng dẫn cho em làm thế nào để build thành một file jar hoàn chỉnh với một project mình viết mà đã chạy hoàn chỉnh được không ạ? Em cám ơn thầy nhiều ạ.

  10. Thầy ơi. Đa sô kink mf của Thầy đã bị xóa. Thầy check lại cho tụi em. Với thầy cho e xin cách run java bằng command line luôn. Cám ơn thầy

  11. Thưa thầy,
    Em muốn hỏi nếu em muốn chèn 1 hình nền vào toàn bộ panel mà vẫn thấy các control trên đó thì phải làm sao vậy thầy?

  12. Xin thầy hướng dẫn giúp đỡ em làm các bài tập trong Module 7: Exception – IO Stream của file Bài tập thực hành thầy cho trên đầu trang web với ạ, em xin chân thành cảm ơn

  13. Thưa thầy!
    thầy cho em hỏi là muuons vẽ các hình ảnh lên jpanel sao cho chúng không trùng nhau và xác định luc nào thì không thể vẽ tiếp dc,kích thước panel cho trước cố định.e cám ơn ak

  14. Bạn nào có cuốn Java Software Solutions – Foundations of Program Design (7th edition) không ? share cho mình với.Mình tìm không có.

  15. thầy giải thích cho e tại sao kết quả = 10 mà không phải là 12 .
    public class oct {
    public static void main(String argv[]){
    oct o = new oct;
    o.amethod;
    public void amethod()
    {
    int oi =012;
    System.out.println(oi);
    }

  16. thầy ơi e lỡ xóa biến path trong environment variables thì làm sao và e đã cài jdk nhưng trong cmd thì bị lỗi giờ phải làm sao?

Leave a Reply