Java.Help

  • Автор теми AkeL.php
  • Дата створення
Ответ: Java.Help

Экивалент того, что ты своял :
Код:
class A
{
	public A()
	{
		String string = new String();
	}
	public void fun()
	{
		System.out.println(string);
	}
}
Не будет оно компилится, да и не должно.
Почему же, компилится будет, т.к. указано public . Насколько я знаю, если не указать public, то Java по умолчанию ставит Private поэтому переменную и не видно из-вне блока конструктора.
Код:
class A
    {
        string stroka;
        public A()
	    {
		    stroka = "Test";
	    }
        public void fun()
	    {
		    Console.WriteLine(stroka);
	    }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A TheA = new A();
            TheA.fun();
        }
    }
 
Останнє редагування модератором:

daoway

кот Шрёдингера
Ответ: Java.Help

Почему же, компилится будет, т.к. указано public . Насколько я знаю, если не указать public, то Java по умолчанию ставит Private поэтому переменную и не видно из-вне блока конструктора.
Код:
class A
    {
        [COLOR="Red"]string stroka;[/COLOR]
        public A()
	    {
		    stroka = "Test";
	    }
        public void fun()
	    {
		    Console.WriteLine(stroka);
	    }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A TheA = new A();
            TheA.fun();
        }
    }
Ыш ты, недоверчивый какой :) Смотри :
C:\temp>javac A.java
A.java:9: cannot find symbol
symbol : variable string
location: class A
System.out.println(string);
^
1 error
Твой пример (я так подозреваю С# ?) не тоже самое, что я написал. Т.к. у тебя там stroka поле класса, а в моём случае, точнее говоря не в моём, а Ackel-a, переменная определется как локальная в конструкторе. А это, как говорят в Одессе, 2 большие разницы :) Попробуй скомпилить вот это :
Код:
class A
    {
        [COLOR="Red"]//string stroka;[/COLOR]
        public A()
	    {
		    [COLOR="Red"]string stroka = "Test";[/COLOR]
	    }
        public void fun()
	    {
		    Console.WriteLine(stroka);
	    }
    }
Оно скажет что :

Код:
C:\temp>csc A.cs
Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.

A.cs(7,14): warning CS0219: The variable 'stroka' is assigned but its value is never used
A.cs(11,25): error CS0103: The name 'stroka' does not exist in the class or namespace 'A'
К модификаторам доступа эта проблема не имеет ни малейшего отношения.
 
Ответ: Java.Help

Ыш ты, недоверчивый какой :) Смотри :

Твой пример (я так подозреваю С# ?) не тоже самое, что я написал. Т.к. у тебя там stroka поле класса, а в моём случае, точнее говоря не в моём, а Ackel-a, переменная определется как локальная в конструкторе. А это, как говорят в Одессе, 2 большие разницы :) Попробуй скомпилить вот это :
Код:
class A
    {
        [COLOR="Red"]//string stroka;[/COLOR]
        public A()
	    {
		    [COLOR="Red"]string stroka = "Test";[/COLOR]
	    }
        public void fun()
	    {
		    Console.WriteLine(stroka);
	    }
    }
Оно скажет что :

Код:
C:\temp>csc A.cs
Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.

A.cs(7,14): warning CS0219: The variable 'stroka' is assigned but its value is never used
A.cs(11,25): error CS0103: The name 'stroka' does not exist in the class or namespace 'A'
К модификаторам доступа эта проблема не имеет ни малейшего отношения.
Да, извиняюсь, переменная оказывается не задекларирована в полях класса. А так, да, переменные которые определяются в блоках { } невидно извне его.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ответ: Java.Help

Почему же, компилится будет, т.к. указано public . Насколько я знаю, если не указать public, то Java по умолчанию ставит Private поэтому переменную и не видно из-вне блока конструктора.
Может быть меня уже подводит память, но когда же это private был по умолчанию? Доступ к private частям класса возможен только при помощи метода, объявленного в этом же классе. По умолчанию ставиться общедоступный. А переменная, которая находиться внутри {} определена только в этом блоке.
 
Ответ: Java.Help

Возможно не совсем в тему, но очевидны проблемы с java, а не приложением. Собственно , stanalone приложение, установка на дебиан прошла на отлично - все работает, при повторной установке на CentOS - получаю вывод:
Код:
[root@virtua ~/ehour-0.7.3-standalone/bin/linux-x86-32]# sh ehour.sh console
Running eHour timesheet management...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Warning: -Xmx256m not understood. Ignoring.
wrapper  | JVM exited while loading the application.
jvm 1    | /usr/bin/java: line 67: /tmp/javal26840: Permission denied
jvm 1    | /usr/bin/java: line 67: /tmp/javal26840: Success
В чем, собственно может быть проблема?
Установлен последний JRE.
Спасибо.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ответ: Java.Help

Возможно не совсем в тему, но очевидны проблемы с java, а не приложением. Собственно , stanalone приложение, установка на дебиан прошла на отлично - все работает, при повторной установке на CentOS - получаю вывод:
Код:
[root@virtua ~/ehour-0.7.3-standalone/bin/linux-x86-32]# sh ehour.sh console
Running eHour timesheet management...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Warning: -Xmx256m not understood. Ignoring.
wrapper  | JVM exited while loading the application.
jvm 1    | /usr/bin/java: line 67: /tmp/javal26840: Permission denied
jvm 1    | /usr/bin/java: line 67: /tmp/javal26840: Success
В чем, собственно может быть проблема?
Установлен последний JRE.
Спасибо.
А исходник можно?
 
Ответ: Java.Help

Нельзя =)

На самом деле протупил я, установив jre из rpm с java downloads, забыв удалить старое jre, установленное из репозитария CentOS. Так что проблема закрыта.
 
Останнє редагування:
A

AkeL.php

Guest
Ответ: Java.Help

Прошу помощи в решении проблемы:

Код:
import java.net.*;
import java.sql.*;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.*; 

	class first{
		public static void main(String args[]){
		
			String  url = "jdbc:mysql://localhost:3306/test", user = "debian-sys-maint", password = "********";
       		try{
    		Class.forName("com.mysql.jdbc.Driver").newInstance();
     		DriverManager.registerDriver((Driver)Class.forName("com.mysql.jdbc.Driver").newInstance());
  			} catch(Exception e){
      		 	System.out.println("Exception while register driver: "+e);
     		}
       		try{
         	Connection conn = DriverManager.getConnection(url,user,password);
         	Statement st=conn.createStatement();
         	ResultSet rs=st.executeQuery("SELECT * FROM test");
         	ResultSetMetaData md=rs.getMetaData();
         	int col=md.getColumnCount();
         		for(int i=1; i<col;i++){
            		System.out.println(md.getColumnName(i)+"___"+md.getColumnTypeName(i));
         		}
         	st.close();
       		conn.close();
	 		} catch(Exception e){};
        
   }
}
akel@akel-desktop:~/java/teach/DB$ java first
Exception while register driver: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
 
Останнє редагування модератором:

GrAndSE

Тёмный
Модератор
Ответ: Java.Help

Рекомендую ознакомится с дерективой -classpath, а также достать драйвер под конкретную БД.
 
A

AkeL.php

Guest
Ответ: Java.Help

Забыл написать, что установил mysql-connector (libmysql-java)
 
Зверху