Τα πάντα για την java

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: προβλημα με script σε java

Δημοσίευσηαπό Star_Light » 20 Δεκ 2011, 16:19

Ρε παιδια αν εχω καταλαβει καλα η Java δεν δεσμεύει μνημη οταν δηλωνεις μεταβλητες
παρα μονο αν δημιουργήσεις και τα αντικείμενα της κλάσης ? Πχ αν εχω 2 κλάσεις.
Και στην 2η εχω δηλωσει καποιες μεταβλητες αυτες καταλαμβάνουν μνήμη μονο οταν
καθε φορα καλω ενα αντικειμενο και του δινω δεδομενα? Σορρυ αλλα ειμαι καινουργιος
στην αντικειμενοστρεφια....
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό clepto » 20 Δεκ 2011, 16:31

αλλαξα και τον τιτλο για να βαζουμε εδω αποριες με java
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό pc_magas » 21 Δεκ 2011, 12:47

φίλε clepto για να κάνεισ complie se java απλά εκτελείς από τερματικό
Κώδικας: Επιλογή όλων
javac <αρχείο>.java

και εκτελείς με
Κώδικας: Επιλογή όλων
java <arxeio_xwris_kataliksi.class>
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2598
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό Star_Light » 23 Δεκ 2011, 16:17

κΑΛΗΣΠερα παιδια.... εχω 2 κλασεις

Κώδικας: Επιλογή όλων

------------------------------------------------------------------------
//import java.util.Scanner;
public class Examples
{
   
   public static void main(String args[])
   {
      Examples2 object = new Examples2();
      
      //object.a=3;
      
      //System.out.println(object.a);
      
      object.display(1);
            
}
}
---------------------------------------------------------------------------
public class Examples2 {

   private int a=2;
   
   public void display(int a)
   {
   System.out.println("a is: " +a);
   }
}
-------------------------------------------------------------------------


δεν καταλαβαινω γιατι το 2 αλλαζει σε 1 αφου το εχω ορισει σαν private μεσα στην 2η κλαση
και δεν χρησιμοποιω το this πχ για να γινει καποιο οβεράιτ . Κανεις καμια βοηθεια?????
Εχω ψιλοκολλησει....

Edit:

με μπερδεψε λιγο αυτο εδω το βιντεακι.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό giannosfor » 23 Δεκ 2011, 17:08

Αν και δεν καταλαβαίνω την ερώτηση σου.Μάλλον δεν έχεις καταλάβει την έννοια του private και άλλες βασικές έννοιες.Όταν κάνεις μία μεταβλητή private σημαίνει ότι δεν είναι προσπελάσιμη σε αντικείμενο άλλης κλάσης.Εσύ περνάς μία τιμή και καλείς την local μεταβλητη a να εμφανιστεί.
Άλλο this.a άλλο σκέτο a σε αυτή τη περίπτωση.Το βίντεο δε το κοίταξα.
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό medigeek » 23 Δεκ 2011, 17:13

Όπως το έχεις, παίρνει τη μεταβλητή a (δλδ. τον αριθμό 1) που έδινες με το display(1).

Το εξηγεί στο βίντεο ότι για να αλλάξει η ημερομηνία/μεταβλητή, πρέπει να βάλεις "this." όταν ζητάς μεταβλητή κλάσης. Δλδ το a γίνεται this.a. Το this.a λέει στο πρόγραμμα «ψάξε τη μεταβλητή a που έθεσα στο class»


To λάθος σου είναι ότι έβαλες με το ίδιο όνομα τη μεταβλητή a στο class και τη μεταβλητή a στο display. Είναι δύο διαφορετικές οντότητες/μεταβλητές. Άρα για να μην συγχιστείς περισσότερο, θέσε το a του display με άλλο όνομα, εγώ το έθεσα mynum:

Examples.java
Κώδικας: Επιλογή όλων
public class Examples
{
    public static void main(String args[])
    {
    Examples2 object = new Examples2();
        object.display(1);
    }
}


Examples2.java
Κώδικας: Επιλογή όλων
public class Examples2 {
    private int a=2; //this is your this.a
    public void display(int mynum)
    {
        System.out.println("this.a was: " +this.a);
        this.a = mynum;
        System.out.println("this.a is now: " +this.a);
    }
}


$ java Examples
this.a was: 2
this.a is now: 1
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό Star_Light » 23 Δεκ 2011, 18:12

:/ ρε σεις στο βιντεο ο ανθρωπος οριζει τις μεταβλητες private με συγκεκριμενες τιμες οι οποιες μένουν
οταν καλει απο την main την μεθοδο με άλλες.... ενω εγω οριζω ακριβως τις μεταβλητες με τον ιδιο τροπο
και τις καλω απο την main δεν μενουν.... λεω το 2 μου το κανει 1. Ενω σε αυτον την 24/11 δεν την κανει 25/11
γιατι ? Ενω σε εμενα το 2 το κανει 1.

@giannosfor επειδη δεν κοιταξες το βιντεο για αυτο και δεν καταλαβαινεις την ερωτηση μου ;)

ας ξεχασουμε λιγο την public void setDate
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό medigeek » 23 Δεκ 2011, 18:32

Αυτό που σου έδωσα δεν κάνει αυτό που θέλεις; Τι θέλεις να κάνεις καλώντας το object.display;
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό medigeek » 23 Δεκ 2011, 18:42

Star_Light έγραψε:λεω το 2 μου το κανει 1

Ξαναεξηγώ:
Star_Light έγραψε: object.display(1);


Star_Light έγραψε: private int a=2;

public void display(int a)
{
System.out.println("a is: " +a);
}

To a είναι το 1 που εκτέλεσες με το object.display(1). Πρόσεξε αυτά που σημείωσα με κόκκινο χρώμα.

Έθεσες δύο ξεχωριστές μεταβλητές με το ίδιο όνομα:
* a στο display με κοκκινο χρώμα
* a στο class με μπλε χρώμα.

Στο public void display όταν αναφέρεσαι στο a θα σου δίνει το a στο display (με κόκκινο χρώμα).
Όταν αναφέρεσαι στο this.a θα σου δίνει το a στο class (με μπλε χρώμα):
Κώδικας: Επιλογή όλων
System.out.println("a is: " +this.a);


Τώρα εξαρτάται από τι θέλεις να κάνεις με το object.display(1) :)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Απορίες σε java

Δημοσίευσηαπό giannosfor » 24 Δεκ 2011, 12:35

Ο @medigeek τα λέει πολύ ωραία.
Το private σημαίνει το εξής.Αν είχες την κλάση Example2.

Κώδικας: Επιλογή όλων
public class Examples2 {
    private int a;

    public void setNumber(int number)
    {
       a=number; //ή this.a = number;
    }
    public int getNumber()
    {
       return a;
    }
}

Ο λόγος που συνήθως βάζεις this.a είναι στην περίπτωση που στο number είχες δώσει όνομα a και έπρεπε με κάποιο τρόπο να ξεχωρίσεις ποιο a εκχωρείς που.
Μη ξεχνάς ότι το number είναι τοπική μεταβλητή δηλαδή δεν έχει υπόσταση έξω από την μέθοδο.Το this αναφέρεται στο αντικείμενο που δημιουργείται,επειδή δε ξέρουμε το όνομα του αντικειμένου που δημιουργείτε,αναφερόμαστε σε αυτό με αυτόν τον τρόπο.
Άρα this.a αναφέρεται στο a του αντικειμένου και όχι στο a που περνάς εσύ σαν local variable.

Και η Example

Κώδικας: Επιλογή όλων
public class Examples
{
    public static void main(String args[])
    {
       Examples2 object = new Examples2();
       object.a = 4; // <- δεν μπορείς.
    }
}

Αυτό δεν μπορείς να το κάνεις,γι'αυτό και ο λόγος της private να μην μπορεί να έχει πρόσβαση άλλη κλάση στη συγκεκριμένη μεταβλητή.
Γι'αυτό δημιουργούμε μία μέθοδο public που έχουν όλοι πρόσβαση για να θέσουμε το a.Αυτό λέγεται ενθυλάκωση- encapsulation.

Κώδικας: Επιλογή όλων
public class Examples
{
    public static void main(String args[])
    {
       Examples2 object = new Examples2();
       object.setNumber(2);
       System.out.println("The number is " + object.getNumber() );
    }
}



Υ.Γ.
Δε κοίταξα το video σου βαριέμαι πραγματικά.Αν θες καλά video ψάξε να βρεις τα video courses της sun είναι παλιά αλλά πολύ καλά.
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι