[Java] Java 학습 노트 총화 (二)
16541 단어 자바 학습
1. AWT 와 Swing 의 차이 점, look 설정 방법 and feel?어떻게 JFrame 에 구성 요 소 를 추가 합 니까?
답: AWT 추상 창 구성 요소 패키지 입 니 다. java 그래 픽 프로그램 을 만 드 는 데 사용 되 는 최초의 개발 패키지.Swing 해결 하기 위해 서 야. AWT 존재 하 는 문제점 을 새롭게 개발 한 가방 AWT 기초 적
설정 룩 and feel:
try{ UIManager. setLookAndFeel (외관 이름); }catch(Exception e){}
방법 setLookAndFeel 의 일부 인자:
UIManager.getCrossPlatformLookAndFeelClassName()
-- 자바 의 인터페이스 외관, 모든 플랫폼 이 일치 합 니 다.
UIManager.getSystemLookAndFeelClassName()
-- 현재 플랫폼 으로 지 정 된 인터페이스 외관. 32 비트 윈도 플랫폼 에서 Windows 인터페이스 모양 만 들 기; Mac 에서 OS 플랫폼, Mac OS 인터페이스 외관; Sun 플랫폼 에서 CDE / Motif 인터페이스 모양 입 니 다.
"javax.swing.plaf.metal.MetalLookAndFeel"
-- 자바 로 지 정 된 인터페이스 외관 은 방법 UIManager. getCrossPlatformLookAndFeelClassName () 의 반환 값 입 니 다.
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
-- 윈도 우즈 로 지 정 된 인터페이스 외관 은 윈도 플랫폼 에서 만 작 동 합 니 다.
"com.sun.java.swing.plaf.motif.MotifLookAndFeel"
-- CDE / Motif 로 지 정 된 인터페이스 외관 은 모든 플랫폼 에서 역할 을 할 수 있 습 니 다.
"javax.swing.plaf.mac.MacLookAndFeel"
-- 맥 으로 지정 OS 의 인터페이스 외관, Mac 에서 만 OS 플랫폼 이 작 동 합 니 다.
Swing 프로그램 용 JFrame 대상 이 창 을 만 들 었 습 니 다. JFrame 클래스 는 AWT Frame 클래스 의 키 클래스 입 니 다. 스윙 도 넣 었 습 니 다. 고유 한 특성. Frame 사용 이 매우 비슷 합 니 다. 유일한 차이 점 은 JFrame 에 구성 요 소 를 추가 할 수 없다 는 것 입 니 다. JFrame 에 구성 요 소 를 추가 하거나 추가 할 수 있 습 니 다. 콘 텐 츠 패 널 (콘 텐 츠 패 널) 새로운 콘 텐 츠 제공 pane (내용 패 널).
JFrame 에 구성 요 소 를 추가 하 는 방법 은 두 가지 가 있 습 니 다. 1) getContentPane () 방법 은 JFrame 의 콘 텐 츠 패 널 을 얻 고 구성 요소: frame 을 추가 합 니 다. getContentPane (). add (childComponent) 2) 는 Jpanel 이나 JDesktop Pane 같은 중간 용 기 를 만 들 고 구성 요 소 를 용기 에 추가 하 며 setContentPane () 방법 으로 이 용 기 를 JFrame 의 콘 텐 츠 패 널 로 설정 합 니 다: JPanel contentPane = new JPanel ();... / / 다른 구성 요 소 를 Jpanel 에 추가 합 니 다. frame. set ContentPane (contentPane); / / contentPane 대상 을 frame 의 콘 텐 츠 패 널 로 설정 합 니 다.
2. 자주 사용 하 는 레이아웃 관리자 와 그 특징 을 말 합 니 다.
답: 자주 사용 하 는 레이아웃 관리자 와 그 특징:
가방 유형 특징 java.awt ---CardLayout--- 구성 요 소 를 카드 처럼 용기 에 놓 으 면 어느 순간 하나의 구성 요소 만 볼 수 있 습 니 다. java.awt--- FlowLayout--- 구성 요 소 를 왼쪽 에서 오른쪽으로, 위 에서 아래로 순서대로 배열 하고 한 줄 을 다 놓 지 못 하면 다음 줄 로 접어 서 계속 배치 합 니 다. java.awt ---GridLayout ---상자 가 없 는 표 와 같 습 니 다. 각각 셀 에 구성 요 소 를 넣 습 니 다. java.awt ---BorderLayout ---구성 요 소 를 동, 남, 서, 북, 중 5 개 구역 에 따라 배치 하고 각 방향 은 최대 한 개의 구성 요소 만 배치 할 수 있 습 니 다. java.awt--- GridBagLayout--- 구성 요소 가 설 치 된 구체 적 인 위치 와 셀 수 를 지정 할 수 있 습 니 다.
3. Frame 과 Dialog 의 기본 레이아웃 관리 자 는 무엇 입 니까? Panel 은 무엇 입 니까?
답: Frame 의 기본 레이아웃 관리 자 는: BorderLayout 입 니 다.
Dialog 의 기본 레이아웃 관리 자 는: BorderLayout 입 니 다.
Panel 의 기본 레이아웃 관리 자 는: FlowLayout 입 니 다.
2013-07-23
IO 파일 쓰기 및 복사
//package com.app;
import java.io.*;
public class Test_IODemo {
public static void main(String[] args) {
ForFileWriter(" FileWriter ", " FileWriter .txt");
ForBufferedWriter(" BufferedWriter ", " BufferedWriter .txt");
FileCopy1(" .txt", " .txt");
FileCopy2(" .txt", " .txt");
FileCopy3(" .txt", " .txt");
}
// FileWriter
public static void ForFileWriter(String string,String fileName) {
File file = new File(fileName);
try {
FileWriter fWriter = new FileWriter(file);
fWriter.write(string);
fWriter.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
// BufferedWriter
public static void ForBufferedWriter(String string,String desFile) {
BufferedWriter bWriter = null;
try {
bWriter = new BufferedWriter(new FileWriter(new File(desFile)));
bWriter.write(string.toString());
bWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//
public static void FileCopy1(String readfile,String writeFile) {
try {
FileReader input = new FileReader(readfile);
FileWriter output = new FileWriter(writeFile);
int read = input.read();
while ( read != -1 ) {
output.write(read);
read = input.read();
}
input.close();
output.close();
} catch (IOException e) {
System.out.println(e);
}
}
//
public static void FileCopy2(String readfile,String writeFile) {
try {
FileInputStream input = new FileInputStream(readfile);
FileOutputStream output = new FileOutputStream(writeFile);
int read = input.read();
while ( read != -1 ) {
output.write(read);
read = input.read();
}
input.close();
output.close();
} catch (IOException e) {
System.out.println(e);
}
}
//
public static void FileCopy3(String readfile,String writeFile) {
BufferedReader bReader = null;
BufferedWriter bWriter = null;
String line = null;
try {
bReader = new BufferedReader(new FileReader(new File(readfile)));
bWriter = new BufferedWriter(new FileWriter(new File(writeFile)));
while ((line = bReader.readLine())!=null) {
bWriter.write(line);
bWriter.newLine();
}
bWriter.close();
bReader.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
2013-07-24
1. Swing 과 IO 를 사용 하여 메모 장 프로그램 을 설계 합 니 다.
답: 자바 파일 은 Test Notepad. 자바 참조
http://blog.csdn.net/jueblog/article/details/9457517
실행 가능 한 파일 은 notepad. exe 참조
2. 대상 의 직렬 화 와 반 직렬 화 는 무엇 입 니까? 구체 적 으로 실 현 된 핵심 코드 를 말 해 보 세 요. Serializable 인 터 페 이 스 는 어떤 역할 을 합 니까?
답: 자바 대상 을 바이트 시퀀스 로 바 꾸 는 과정 을 대상 의 직렬 화 라 고 합 니 다. 바이트 시퀀스 를 자바 대상 으로 복원 하 는 과정 을 대상 의 반 직렬 화 라 고 합 니 다. 대상 의 직렬 화 는 주로 두 가지 용도 가 있 습 니 다. 1) 대상 의 바이트 시퀀스 를 하 드 디스크 에 영구적 으로 저장 하고 보통 파일 에 저장 합 니 다. 2) 네트워크 에서 전송 대상 의 바이트 시퀀스.
대상 서열 화:
public static void ser(Person p, String fileName){
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream(new File(fileName)));
oos.writeObject(p);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
대상 의 역 직렬 화:
public static void unSer(String fileName){
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(fileName)));
Person p = (Person)ois.readObject();
System.out.println(p.getAge() + p.getName());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3. 하위 디 렉 터 리 나 파일 이름 을 출력 할 디 렉 터 리 를 지정 합 니 다.
답: 자바 파일 참조 Text_IO_File.java
import java.io.*;
// , 。
//
public class Text_IO_File {
public static void main(String[] args) {
File directory = new File("");
String pathString = null;
try{
pathString = directory.getCanonicalPath();//
}catch(Exception e){}
System.out.println(" :");
FileTest_List(pathString);
System.out.println(" Java :");
FileTest_List_Choice(pathString, ".java");
}
// 。
public static void FileTest_List(String fileName) {
try {
File f=new File(fileName);
String[] arrStrings = f.list();
for(String string : arrStrings){
System.out.println(string);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
// choice
public static void FileTest_List_Choice(String fileName,final String choice) {
try {
File f=new File(fileName);
String[] arrStrings = f.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.indexOf(choice) != -1;
}
});
for(String string : arrStrings){
System.out.println(string);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
4. a. txt 파일 의 단어 와 b. txt 파일 의 단 어 를 c. txt 파일 에 교체 합 쳐 a. txt 파일 의 단 어 를 리 턴 문자 로 구분 하고 b. txt 파일 에 서 는 리 턴 이나 빈 칸 으로 구분 하 는 프로그램 을 만 듭 니 다.
답: 자바 파일 참조 Test_Merge.java
//package com.app;
import java.io.*;
public class Test_Merge {
public static void main(String[] args) {
WordMarge("Word1.txt", "Word2.txt", "WordMarge.txt");
}
// readfile1 readfile2 writeFile
public static void WordMarge(String readfile1,String readfile2,String writeFile) {
BufferedReader bReader1 = null;
BufferedReader bReader2 = null;
BufferedWriter bWriter = null;
String line1 = null;
String line2 = null;
try {
bReader1 = new BufferedReader(new FileReader(new File(readfile1)));
bReader2 = new BufferedReader(new FileReader(new File(readfile2)));
bWriter = new BufferedWriter(new FileWriter(new File(writeFile)));
while ((line1 = bReader1.readLine())!=null | (line2 = bReader2.readLine())!=null) {
if(line1 != null) {
bWriter.write(line1);
bWriter.newLine();
}
if(line2 !=null) {
bWriter.write(line2);
bWriter.newLine();
}
}
bWriter.close();
bReader1.close();
bReader2.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
2013-07-25
스 레 드 동기 화
//1package com.app;
/**
* Java :
*/
import java.util.concurrent.*;
public class Test0725_Thread_Syn4 {
public static void main(String[] args) {
final ExecutorService exec = Executors.newFixedThreadPool(1);
Callable<String> call = new Callable<String>() {
public String call() throws Exception {
//
int cash = 300;
String name = " ";
System.out.println(name + " " + cash + " ");
User u = new User(name, cash);
String[] arr = { " A", " B", " C", " D", " E", " F",
" G", " H", " I", " J" };
for (int i = 0; i < 10; i++) {
MyThread th = new MyThread(arr[i], u,
(int) (Math.random() * 1000 - 500));
th.start();
}
Thread.sleep(1000 * 5);
return " .";
}
};
try {
Future<String> future = exec.submit(call);
String obj = future.get(1000 * 1, TimeUnit.MILLISECONDS); // 1
System.out.println(" :" + obj);
} catch (TimeoutException ex) {
System.out.println("
....");
System.exit(0);
} catch (Exception e) {
System.out.println(" .");
e.printStackTrace();
}
try {
Future<String> future = exec.submit(call);
String obj = future.get(1000 * 1, TimeUnit.MILLISECONDS); // 1
System.out.println(" :" + obj);
} catch (TimeoutException ex) {
System.out.println(" ....");
ex.printStackTrace();
} catch (Exception e) {
System.out.println(" .");
e.printStackTrace();
}
exec.shutdown(); //
/* int cash2 = 100;
String name2 = " ";
System.out.println(name2 + " " + cash2 + " ");
User u2 = new User(name, cash);
String[] arr2 = {" A"," B"," C"," D"," E"," F"};
for (int i = 0; i < 6; i++) {
MyThread th2 = new MyThread(name2+arr2[i], u2, (int)(Math.random()*1000-500));
th2.start();
}*/
}
}
class MyThread extends Thread {
private User u;
private int x = 0;
MyThread(String name, User u, int x) {
super(name);
this.u = u;
this.x = x;
}
public void run() {
u.oper(x);
}
}
class User {
private String code;
private int cash;
private int time = 0;
User(String code, int cash) {
this.code = code;
this.cash = cash;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public int getCash() {
return cash;
}
public void setCode(int cash) {
this.cash = cash;
}
/**
*
* x
*/
public synchronized void oper(int x) {
if ((this.cash +x >= 1000) && x > 0 ) {
System.out.println(Thread.currentThread().getName() + " !"+" :" + this.cash + ", " +x + ", !");
try {
Thread.yield();
// Thread.sleep(100);
this.wait();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if (this.cash + x <0) {
System.out.println(Thread.currentThread().getName() + " !"+" :" + this.cash + ", " +x +", !");
try {
Thread.yield();
// Thread.sleep(100);
this.wait();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(this.cash < 1000 && this.cash > 0 && (this.cash + x >= 0) && (this.cash + x <= 1000)){
this.cash += x;
System.out.println(Thread.currentThread().getName() + " , “ "
+ x + " ”, :" + this.cash);
time++;
this.notifyAll();
}
this.notifyAll();
}
@Override
public String toString() {
return "User{" + "code='" + code + '\'' + ", cash=" + cash + '}';
}
}
2013-07-26
1. 동기 화 에는 몇 가지 실현 방법 이 있다.
답: 자바 의 동기 화 는 synchronized 키워드 로 이 루어 집 니 다. 주로 두 가지 방법 이 있 습 니 다. sychronized 동기 화 코드 는 synchronized (obj) {} sychronized 동기 화 방법 과 같은 대상 을 연결 해 야 합 니 다. 예 를 들 어 Public void synchronized methodA(){}
2. 스 레 드 의 기본 상태 (수명 주기).
답: 자바 에서 모든 스 레 드 는 생 성, 준비, 운행, 차단 과 종료 다섯 가지 상 태 를 거 쳐 야 합 니 다. 스 레 드 는 생 성 에서 종료 까지 의 상태 변 화 를 생명 주기 라 고 합 니 다.
new 연산 자 와 Thread 클래스 또는 하위 클래스 로 스 레 드 대상 을 만 든 후 이 스 레 드 는 생 성 상태 에 있 습 니 다.
창설 --- > 준비: start () 방법 호출
준비 - > 실행: 준비 상태 에 있 는 스 레 드 가 CPU 를 받 으 면 실행 상태 에 들 어가 자신의 run () 방법 을 자동 으로 호출 합 니 다.
실행 --- > 차단: 실행 상태 에 있 는 스 레 드, sleep () 방법 을 실행 하거나 I / O 장치 자원 을 기다 리 며 CPU 를 내 보 내 고 자신의 실행 을 잠시 중단 하고 차단 상태 에 들 어 갑 니 다.
차단 - > 준비: 수면 시간 이 다 되 었 거나 기다 리 는 I / O 장치 가 비어 있 으 면 스 레 드 가 준비 상태 에 들 어가 서 다시 준비 대기 열 에서 CPU 를 기다 립 니 다. CPU 를 다시 얻 었 을 때 원래 중단 위치 부터 계속 실 행 됩 니 다.
실행 --- > 종료: (1) (정상 적 인 상황 에서) 스 레 드 작업 완료 (2) (비정상적인 상황) 스 레 드 가 강제 적 으로 중단 되 었 습 니 다. 예 를 들 어 stop () 또는 destroy () 방법 을 실행 하여 스 레 드 를 종료 합 니 다.
3. synchronized 와 java. util. concurrent. locks. Lock 의 공통점 과 차이 점 을 약술 합 니 다.
답: 주요 공통점:
Lock 은 synchronized 가 실현 하 는 모든 기능 을 완성 할 수 있 습 니 다.
주요 차이 점:
1) Lock 은 synchronized 보다 더 정확 한 스 레 드 의미 와 더 좋 은 성능 을 가지 고 있다.
2) synchronized 는 자동 으로 자 물 쇠 를 풀 고 Lock 은 프로그래머 에 게 손 으로 풀 어 달라 고 요구 하 며 finally 에서 풀 어야 합 니 다.
4. 4 개의 스 레 드 를 설계 합 니 다. 그 중에서 두 스 레 드 는 매번 j 에 게 1 을 증가 하고 다른 두 스 레 드 는 j 에 게 매번 1 을 감소 합 니 다. 프로그램 을 작성 합 니 다.
답: 자바 코드 는 ThreadTest. 자바 참조
//package com.app;
public class ThreadTest {
static int t = 10;
static final int TIME = 5;
public static void main(String[] args) {
ThreadTest test = new ThreadTest();
AddTest thread1 = test.new AddTest();
MinusTest thread2 = test.new MinusTest();
for (int i = 0; i < 2; i++) {
new Thread(thread1).start();
new Thread(thread2).start();
}
}
private synchronized void Add() {
t++;
System.out.println(Thread.currentThread().getName() + "-- --" +t);
}
class AddTest implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < TIME; i++) {
Add();
}
}
}
private synchronized void Minus() {
t--;
System.out.println(Thread.currentThread().getName() + "-- --" +t);
}
class MinusTest implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < TIME; i++) {
Minus();
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 의 각종 암호 화 알고리즘JAVA 에서 저 희 를 위해 풍부 한 암호 화 기술 을 제 공 했 습 니 다. 기본적으로 단 방향 암호 화 와 비대 칭 암호 화로 나 눌 수 있 습 니 다. 1. 단 방향 암호 화 알고리즘 단 방향 암호 화 알고리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.