백엔드 개발 PHP 튜토리얼 Java基础FAQ_PHP教程

Java基础FAQ_PHP教程

Jul 13, 2016 pm 05:34 PM
dir faq java 추가하다 매개변수 시작하다 베이스 어떻게 프로그램

Java基础FAQ

Java基础 FAQ

三、I/O篇

18
我怎么给java程序加启动参数,就像dir /p/w那样?
 答:还记得public static void main(String[] args)吗?这里的args就是你的启动参数。
 在运行时你输入java package1.class1 -arg1 -arg2,args中就会有两个String,一个是arg1,另一个是arg2。

19 我怎么从键盘输入一个int/double/字符串?
 答:java的I/O操作比C++要复杂一点。如果要从键盘输入,样例代码如下:

 BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) )
 ;
 String s = cin.readLine();


 这样你就获得了一个字符串,如果你需要数字的话再加上:

 int n = Integer.parseInt( s );


 或者

 double d = Double.parseDouble( s );



20 我怎么输出一个int/double/字符串?
 答:在程序开始写:

 PrintWriter cout = new PrintWriter( System.out );


 需要时写:

 cout.print(n);


 或者

 cout.println("hello")


 等等。

21 我发现有些书上直接用System.in和System.out输入输出,比你要简单得多。
 答:java使用unicode,是双字节。而System.in和System.out是单字节的stream。如果你要输入输出双字节文字比如中文,请使用作者的做法。

四、 关键字篇

25
java里面怎么定义宏?
 答:java不支持宏,因为宏代换不能保证类型安全。如果你需要定义常量,可以将它定义为某个类的static final成员。参见26和30。

26 java里面没法用const。
 答:你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次赋值。也可以用于声明方法或类,被声明为final的方法或类不能被继承。注意const是java的保留字以备扩充。

27 java里面也不能用goto。
 答:甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。如果你需要从多层循环中迅速跳出,java增强了(和C++相比)break和continue的功能。
 例如:

 outer :
 while( ... )
 {
 inner :
 for( ... )
 {
 ... break inner; ...
 ... continue outer; ...
 }
 }


 和const一样,goto也是java的保留字以备扩充。

28 java里面能不能重载操作符?
 答:不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现类似功能。

29 我new了一个对象,但是没法delete掉它。
 答:java有自动内存回收机制,即所谓Garbarge Collector。你再也不用担心指针错误。

30 我想知道为什么main方法必须被声明为public static?
 答:声明为public是为了这个方法可以被外部调用,详情见面向对象篇37。
 static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。你不需要创建一个对象就可以直接使用这个类的static成员,在A类中调用B类的static成员可以使用B.staticMember的写法。注意一个类的static成员变量是唯一的,被所有该类对象所共享的。

31 throw和throws有什么不同?
 答:throws用于声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的动作。如果你在方法中throw一个异常,却没有在方法声明中声明之,编译器会报错。注意Error和RuntimeException的子类是例外,无需特别声明。

32 什么是异常?
 答:异常最早在Ada语言中引入,用于在程序中动态处理错误并恢复。你可以在方法中拦截底层异常并处理之,也可以抛给更高层的模块去处理。你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下:

 try
 {
 ...... //以下是可能发生异常的代码
 ...... //异常被抛出,执行流程中断并转向拦截代码。
 ......
 }

 catch(Exception1 e) //如果Exception1是Exception2的子类并要做特别处理,应排在前面
 {
 //发生Exception1时被该段拦截
 }
 catch(Exception2 e)
 {
 //发生Exception2时被该段拦截
 }
 finally //这是可选的
 {
 //无论异常是否发生,均执行此段代码
 }

33 final和finally有什么不同?
 答:final请见26。finally用于异常机制,参见32。


五、 面向对象篇

34 extends和implements有什么不同?
 答:extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。interface的引入是为了部分地提供多继承的功能。
在interface中只需声明方法头,而将方法体留给实现的class来做。这些实现的class的实例完全可以当作interface的实例来对待。有趣的是在interface之间也可以声明为extends(单继承)的关系。

35 java怎么实现多继承?
 答:java不支持显式的多继承。因为在显式多继承的语言例如c++中,会出现子类被迫声明祖先虚基类构造函数的问题,而这是违反面向对象的封装性原则的。java提供了interface和implements关键字来部分地实现多继承。参见34。

36 abstract是什么?
 答:被声明为abstract的方法无需给出方法体,留给子类来实现。而如果一个类中有abstract方法,那么这个类也必须声明为abstract。被声明为abstract的类无法实例化,尽管它可以定义构造方法供子类使用。

37 public,protected,private有什么不同?
 答:这些关键字用于声明类和成员的可见性。
 public成员可以被任何类访问,
 protected成员限于自己和子类访问,
 private成员限于自己访问。
 Java还提供了第四种的默认可见性,一般称为package private,当没有任何public,protected,private修饰符时,成员是同一包内可见。类可以用public或默认来修饰。

38 Override和Overload有什么不同?
 答:Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。Overload是指同一个类中不同方法(可以在子类也可以在父类中定义)间的关系,这些方法有着相同的名称和不同的参数类型。

39 我继承了一个方法,但现在我想调用在父类中定义的方法。
 答:用super.xxx()可以在子类中调用父类方法。

40 我想在子类的构造方法中调用父类的构造方法,该怎么办?
 答:在子类构造方法的第一行调用super(...)即可。

41 我在同一个类中定义了好几个构造方法并且想在一个构造方法中调用另一个。
 答:在构造方法第一行调用this(...)。

42 我没有定义构造方法会怎么样?
 答:自动获得一个无参数的构造方法。

43 我调用无参数的构造方法失败了。
 答:如果你至少定义了一个构造方法,就不再有自动提供的无参数的构造方法了。你需要显式定义一个无参数的构造方法。

44 我该怎么定义类似于C++中的析构方法(destructor)?
 答:提供一个void finalize()方法。在Garbarge Collector回收该对象时会调用该方法。注意实际上你很难判断一个对象会在什么时候被回收。作者从未感到需要提供该方法。

45 我想将一个父类对象转换成一个子类对象该怎么做?
 答:强制类型转换。如

 public void meth(A a)
 {
 B b = (B)a;
 }


 如果a实际上并不是B的实例,会抛出ClassCastException。所以请确保a确实是B的实例。

46 其实我不确定a是不是B的实例,能不能分情况处理?
 答:可以使用instanceof操作符。例如

 if( a instanceof B )
 {
 B b = (B)a;
 }
 else
 {
 ...
 }

47 我在方法里修改了一个对象的值,但是退出方法后我发现这个对象的值没变!
 答:很可能你把传入参数重赋了一个新对象,例如下列代码就会造成这种错误:

 public void fun1(A a) //a是局部参数,指向了一个外在对象。
 {
 a = new A(); //a指向了一个新对象,和外在对象脱钩了。如果你要让a作为传出变量,不要写这一句。
 a.setAttr(attr);//修改了新对象的值,外在对象没有被修改。
 }


 基本类型也会出现这种情况。例如:

 public void fun2(int a)
 {
 a = 10;//只作用于本方法,外面的变量不会变化。
 }



六、java.util篇

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508516.htmlTechArticleJava基础FAQ Java基础 FAQ 三、I/O篇 18 我怎么给java程序加启动参数,就像dir /p/w那样? 答:还记得public static void main(String[] args)吗?这里的args就...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

나이키 신발의 정품과 가짜 신발 상자를 식별하는 방법(쉽게 식별하는 하나의 트릭 마스터) 나이키 신발의 정품과 가짜 신발 상자를 식별하는 방법(쉽게 식별하는 하나의 트릭 마스터) Sep 02, 2024 pm 04:11 PM

세계적인 스포츠 브랜드로서 나이키의 신발은 많은 주목을 받았다. 그러나 가짜 Nike 신발 상자를 포함하여 시중에는 수많은 위조 제품도 있습니다. 정품 신발 상자와 가짜 신발 상자를 구별하는 것은 소비자의 권익을 보호하는 데 중요합니다. 이 글에서는 진짜 신발 상자와 가짜 신발 상자를 구별하는 데 도움이 되는 몇 가지 간단하고 효과적인 방법을 제공합니다. 1: 외부 포장 제목 Nike 신발 상자의 외부 포장을 관찰하면 미묘한 차이가 많이 있음을 알 수 있습니다. 정품 Nike 신발 상자는 일반적으로 촉감이 부드럽고 뚜렷한 매운 냄새가 없는 고품질 종이 재질로 되어 있습니다. 정품 신발 상자의 글꼴과 로고는 일반적으로 명확하고 상세하며 흐릿하거나 색상 불일치가 없습니다. 2: 나이키 신발 상자의 로고 핫 스탬핑 제목은 일반적으로 정품 신발 상자의 핫 스탬핑 부분입니다.

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Feb 07, 2025 pm 12:09 PM

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

디지털 통화의 상위 10 개 교환 앱은 무엇입니까? 디지털 통화의 상위 10 개 교환 앱은 무엇입니까? Feb 20, 2025 pm 02:03 PM

이 기사는 통화 서클의 상위 10 개 주요 교환 응용 프로그램을 요약하고 장점과 기능을 강조합니다. 이러한 교환에는 Binance, Huobi, Okx, Binance USA, Coinbase, Kraken, Bitfinex, Kucoin, Gate.io 및 Crypto.com이 포함됩니다. 그들은 다양한 투자자에게 수용하는 광범위한 거래 쌍, 거래 도구 및 보안 기능을 제공합니다.

통화 서클의 최신 순위에서 상위 10 개 트레이딩 디지털 통화 앱을 다운로드하십시오. 통화 서클의 최신 순위에서 상위 10 개 트레이딩 디지털 통화 앱을 다운로드하십시오. Feb 20, 2025 pm 06:15 PM

통화 서클의 상위 10 개 거래 디지털 통화 앱 : Binance, OKX, Gate.io, Bitget, Huobi, Bybit, Kucoin, Mexc, Poloniex, Bitmart. 그 중에서도 통화 서클의 4 가지 주요 거래 앱은 Binance, Okx, Gate.io 및 Bitget입니다. 이는 광범위한 암호 화폐 옵션, 낮은 거래 수수료, 강력한 거래 플랫폼 및 고급 거래 기능을 제공합니다.

미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 Oct 13, 2024 pm 01:32 PM

Java는 초보자와 숙련된 개발자 모두가 배울 수 있는 인기 있는 프로그래밍 언어입니다. 이 튜토리얼은 기본 개념부터 시작하여 고급 주제를 통해 진행됩니다. Java Development Kit를 설치한 후 간단한 "Hello, World!" 프로그램을 작성하여 프로그래밍을 연습할 수 있습니다. 코드를 이해한 후 명령 프롬프트를 사용하여 프로그램을 컴파일하고 실행하면 "Hello, World!"가 콘솔에 출력됩니다. Java를 배우면 프로그래밍 여정이 시작되고, 숙달이 깊어짐에 따라 더 복잡한 애플리케이션을 만들 수 있습니다.

캡슐의 양을 찾기위한 Java 프로그램 캡슐의 양을 찾기위한 Java 프로그램 Feb 07, 2025 am 11:37 AM

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

Spring Tool Suite에서 첫 번째 Spring Boot 응용 프로그램을 실행하는 방법은 무엇입니까? Spring Tool Suite에서 첫 번째 Spring Boot 응용 프로그램을 실행하는 방법은 무엇입니까? Feb 07, 2025 pm 12:11 PM

Spring Boot는 강력하고 확장 가능하며 생산 가능한 Java 응용 프로그램의 생성을 단순화하여 Java 개발에 혁명을 일으킨다. Spring Ecosystem에 내재 된 "구성에 대한 협약"접근 방식은 수동 설정, Allo를 최소화합니다.

Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Oct 11, 2024 pm 06:30 PM

간단해진 Java: 강력한 프로그래밍을 위한 초보자 가이드 소개 Java는 모바일 애플리케이션에서 엔터프라이즈 수준 시스템에 이르기까지 모든 분야에서 사용되는 강력한 프로그래밍 언어입니다. 초보자의 경우 Java의 구문은 간단하고 이해하기 쉬우므로 프로그래밍 학습에 이상적인 선택입니다. 기본 구문 Java는 클래스 기반 객체 지향 프로그래밍 패러다임을 사용합니다. 클래스는 관련 데이터와 동작을 함께 구성하는 템플릿입니다. 다음은 간단한 Java 클래스 예입니다. publicclassPerson{privateStringname;privateintage;

See all articles