공개
공개로 정의된 클래스, 메소드 또는 변수는 모든 클래스 또는 메소드에서 액세스할 수 있습니다.
보호됨
Protected는 동일한 패키지의 클래스, 이 클래스의 하위 클래스 또는 동일한 클래스 내에서 액세스할 수 있습니다.
(참고: 이 키워드는 중첩 클래스에만 허용됩니다.)
비공개
private으로 정의된 private 클래스, 메소드, 변수는 해당 클래스 내에서만 접근 가능합니다.
기본값
기본값은 패키지 내에서만 액세스할 수 있습니다. 기본적으로 모든 클래스, 메소드 및 변수는 기본 범위를 갖습니다.
package com.example; public class Example { private int privateVar = 10; int defaultVar = 20; protected int protectedVar = 30; public int publicVar = 40; public static void main(String[] args) { Example example = new Example(); // Accessing all variables within the same class System.out.println("Private Var: " + example.privateVar); System.out.println("Default Var: " + example.defaultVar); System.out.println("Protected Var: " + example.protectedVar); System.out.println("Public Var: " + example.publicVar); } } //Another file package com.example; public class Example1 { public static void main(String[] args) { Example example = new Example(); // Private variable is inaccessible System.out.println("Default Var: " + example.defaultVar); System.out.println("Protected Var: " + example.protectedVar); System.out.println("Public Var: " + example.publicVar); } } // File: Different.java package com.example.subpackage; import com.example.Example; public class Different extends Example { public static void main(String[] args) { Example example = new Example(); Different subClassExample = new Different(); // Private variable is inaccessible // Default variable is inaccessible // Protected variable is inaccessible System.out.println("Public Var: " + example.publicVar); // Accessing protected variable through inheritance System.out.println("Protected Var (through inheritance): " + subClassExample.protectedVar); } }
public class Main { // Class to demonstrate structure equivalent static class Person { String name; // Default value is null int age; // Default value is 0 float salary; // Default value is 0.0f } // Enumeration to demonstrate enum equivalent enum Color { RED, GREEN, BLUE } public static void main(String[] args) { // Basic data types int a = 10; // Default value is 0 float b = 5.5f; // Default value is 0.0f char c = 'A'; // Default value is '\u0000' double d = 2.3; // Default value is 0.0d long e = 123456789L; // Default value is 0L short f = 32000; // Default value is 0 byte g = 100; // Default value is 0 // Array int[] arr = {1, 2, 3, 4, 5}; // Structure equivalent Person person1 = new Person(); person1.age = 30; person1.salary = 55000.50f; // Enumeration Color myColor = Color.RED; } }
메서드 오버로딩은 동일한 클래스 내에서 여러 메서드가 이름은 같지만 매개변수가 다를 때 발생합니다. 이 문제는 컴파일 타임에 해결됩니다.
class MathOperations { // Method to add two integers public int add(int a, int b) { return a + b; } // Method to add three integers public int add(int a, int b, int c) { return a + b + c; } // Method to add two double values public double add(double a, double b) { return a + b; } } public class Main { public static void main(String[] args) { MathOperations math = new MathOperations(); System.out.println(math.add(2, 3)); System.out.println(math.add(1, 2, 3)); System.out.println(math.add(2.5, 3.5)); } }
메서드 재정의는 하위 클래스가 해당 상위 클래스에 이미 정의된 메서드에 대한 특정 구현을 제공할 때 발생합니다. 이 문제는 런타임에 해결됩니다
class Animal { public void makeSound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override public void makeSound() { System.out.println("Dog barks"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Animal(); myAnimal.makeSound(); // Calls method in Animal class Dog myDog = new Dog(); myDog.makeSound(); // Calls overridden method in Dog class } }
배열과 객체는 항상 복사가 아닌 참조로 전달됩니다. 기본 데이터 유형은 값으로 전달됩니다.
public class Main { public static void main(String[] args) { // Integer array int[] intArray = new int[5]; // Default values: 0 int[] intArray2 = {1, 2, 3, 4, 5}; // Initialized with specific values // Float array float[] floatArray = new float[5]; // Default values: 0.0f float[] floatArray2 = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f}; // Initialized with specific values } }
기본 메소드는 default 키워드로 인터페이스에 정의된 메소드입니다. 이를 통해 인터페이스는 인터페이스를 구현하는 클래스에 영향을 주지 않고 메소드 구현을 제공할 수 있습니다.
interface Animal { void makeSound(); // abstract method // Default method default void sleep() { System.out.println("Sleeping..."); } } class Dog implements Animal { public void makeSound() { System.out.println("Bark"); } } public class Main { public static void main(String[] args) { Animal dog = new Dog(); dog.makeSound(); // Output: Bark dog.sleep(); // Output: Sleeping... } }
멤버(변수, 메소드 또는 중첩 클래스)가 클래스의 인스턴스가 아닌 클래스 자체에 속함을 나타냅니다.
(참고: 비정적 메서드 내에서는 정적 변수를 선언할 수 없습니다.)
public class StaticExample { // Static variable static int staticVariable = 10; // Instance variable int instanceVariable = 20; // Static method static void staticMethod() { // Can access static variable System.out.println(staticVariable); // Cannot access instance variable directly // System.out.println(instanceVariable); } // Instance method void instanceMethod() { // Can access static variable System.out.println(staticVariable); // Can access instance variable System.out.println(instanceVariable); } // Static nested class static class StaticNestedClass { void display() { System.out.println("Static nested class method called."); // Can access static members of the outer class System.out.println("Static variable from nested class: " + staticVariable); } } public static void main(String[] args) { // Call static method StaticExample.staticMethod(); // Create an instance of the class StaticExample example = new StaticExample(); // Call instance method example.instanceMethod(); // Create an instance of the static nested class StaticNestedClass nestedClass = new StaticNestedClass(); nestedClass.display(); } }
(참고: 인스턴스 및 정적 변수만 기본값으로 초기화됩니다.)
import java.util.Scanner; public class InputExample { public static void main(String[] args) { int num; int num1=0; System.out.println(num); //Throws error System.out.println(num1); // prints 0 } }
import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.LinkedList; public class Main { public static void main(String[] args) { Class<?> clazz = LinkedList.class; // Get all methods of the class Method[] methods = clazz.getDeclaredMethods(); // Print the names and parameters of all methods for (Method method : methods) { System.out.print("Method Name: " + method.getName()); System.out.print(", Parameters: "); Parameter[] parameters = method.getParameters(); for (Parameter parameter : parameters) { System.out.print(parameter.getType().getName() + " " + parameter.getName() + ", "); } System.out.println(); } } }
import java.util.Scanner; public class InputExample { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // Reading integer input System.out.print("Enter an integer: "); int intValue = scan.nextInt(); System.out.println("Integer entered: " + intValue); // Reading double input System.out.print("Enter a double: "); double doubleValue = scan.nextDouble(); System.out.println("Double entered: " + doubleValue); // Reading string input (including spaces) System.out.print("Enter a string: "); scan.nextLine(); // Consume the newline character String stringValue = scan.nextLine(); System.out.println("String entered: " + stringValue); // Reading character input System.out.print("Enter a character: "); char charValue = scan.next().charAt(0); System.out.println("Character entered: " + charValue); // Reading boolean input System.out.print("Enter a boolean (true/false): "); boolean booleanValue = scan.nextBoolean(); System.out.println("Boolean entered: " + booleanValue); // Reading input until there is no more input available System.out.println("Enter multiple lines of input (Ctrl+D / Ctrl+Z to exit):"); scan.nextLine(); // Consume the newline character while (scan.hasNext()) { String line = scan.nextLine(); System.out.println("Input: " + line); } scan.close(); } }
public class Main { public static void main(String[] args) { for (int i = 0; i < 10; ++i) { System.out.print(i + " "); } System.out.println(); } }
public class Main { public static void main(String[] args) { int i = 0; while (i < 10) { System.out.print(i + " "); ++i; } System.out.println(); } }
public class Main { public static int add(int a, int b) { return a + b; } public static void main(String[] args) { int result = add(5, 3); System.out.println("Sum: " + result); } }
public class Rectangle { private int width, height; public Rectangle(int w, int h) { this.width = w; this.height = h; } public int area() { return width * height; } public static void main(String[] args) { Rectangle rect = new Rectangle(5, 3); System.out.println("Area: " + rect.area()); } }
public class Shape { public void draw() { System.out.println("Drawing a shape"); } } public class Circle extends Shape { @Override public void draw() { System.out.println("Drawing a circle"); } public static void main(String[] args) { Shape shape = new Circle(); shape.draw(); } }
최종 키워드
를 추가하여 생성됩니다.1) 최종변수
이 변수는 한 번 초기화되면 변경할 수 없습니다
public class FinalVariableExample { public static void main(String[] args) { final int x = 10; // x = 20; // This will cause a compilation error System.out.println(x);// 10 } }
2) 최종 방법
이 방법은 재정의할 수 없습니다
class Parent { final void show() { System.out.println("This is a final method."); } } class Child extends Parent { // void show() { // This will cause a compilation error // System.out.println("Trying to override."); // } } public class FinalMethodExample { public static void main(String[] args) { Child c = new Child(); c.show(); // Output: This is a final method. } }
Java의 super 키워드는 현재 객체의 직계 상위 클래스를 참조하는 데 사용됩니다. 하위 클래스 내에서 상위 클래스의 멤버(메서드 및 변수)에 액세스하는 방법을 제공합니다.
class Parent { int x = 10; void display() { System.out.println("Parent's display method"); } Parent() { System.out.println("Parent's constructor"); } } class Child extends Parent { int x = 20; void display() { super.display(); // Calls the display method of Parent class System.out.println("Child's display method"); } Child() { super(); // Calls the constructor of Parent class System.out.println("Child's constructor"); } } public class Test { public static void main(String[] args) { Child obj = new Child(); System.out.println("Value of x in Child: " + obj.x); obj.display(); } }
Java의 abstract 키워드는 추상 클래스와 추상 메소드를 정의하는 데 사용됩니다. 추상 클래스는 직접 인스턴스화할 수 없으며 하위 클래스로 만들어집니다. 추상 메서드에는 본문이 없으며 하위 클래스로 구현되어야 합니다.
추상적이고 구체적인 방법을 담고 있습니다
abstract class Animal { // Abstract method (does not have a body) abstract void makeSound(); // Regular method void eat() { System.out.println("This animal is eating."); } } class Dog extends Animal { // The body of the abstract method is provided here void makeSound() { System.out.println("Woof"); } } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.makeSound(); // Output: Woof myDog.eat(); // Output: This animal is eating. } }
한 인터페이스가 다른 인터페이스의 메서드를 상속하려는 경우 확장 키워드를 사용합니다.
추상 클래스는 인터페이스를 구현할 수 있습니다. 이는 추상 클래스가 Implements 키워드를 사용하여 인터페이스의 부분 구현을 제공한다는 의미입니다.
추상 클래스는 확장 키워드를 사용하여 다른 추상 클래스를 확장할 수 있습니다
상수, 기본 메소드, 정적 메소드 및 메소드 시그니처만 포함하는 클래스와 유사한 참조 유형입니다
(참고: 인터페이스에는 기본 메소드 정의만 존재합니다.)
(참고: 인터페이스 내부에 선언된 상수는 public, static 및 final)
interface Animal { void makeSound(); // abstract method } class Dog implements Animal { public void makeSound() { System.out.println("Bark"); } } class Cat implements Animal { public void makeSound() { System.out.println("Meow"); } } public class Main { public static void main(String[] args) { Animal dog = new Dog(); Animal cat = new Cat(); dog.makeSound(); // Output: Bark cat.makeSound(); // Output: Meow } }
다이아몬드 문제 극복(다중 상속):
interface A { void display(); } interface B extends A { default void display() { System.out.println("Display from B"); } } interface C extends A { default void display() { System.out.println("Display from C"); } } class D implements B, C { @Override public void display() { B.super.display(); C.super.display(); System.out.println("Display from D"); } } public class Main { public static void main(String[] args) { D d = new D(); d.display(); //Output //Display from B //Display from C //Display from D } }
import java.util.LinkedList; import java.util.List; import java.util.ArrayList; public class ListExample { public static void main(String[] args) { // Declare list as LinkedList List<Character> list = new LinkedList<>(); // Add elements list.add('A'); list.add('B'); list.add('C'); // Change implementation to ArrayList list = new ArrayList<>(list); // Add more elements list.add('D'); list.add('E'); // Change implementation to Vector list = new Vector<>(list); // Add more elements list.add('F'); list.add('G'); } }
Java의 대기열 인터페이스는 Java 컬렉션 프레임워크의 일부이며 처리 전에 요소를 보관하도록 설계된 컬렉션을 나타냅니다. 일반적으로 FIFO(선입선출) 방식으로 요소를 정렬하지만 Deque 구현의 경우 LIFO(후입선출)와 같은 다른 정렬도 가능합니다.
import java.util.LinkedList; import java.util.PriorityQueue; import java.util.ArrayDeque; import java.util.Queue; import java.util.Deque; public class QueueExample { public static void main(String[] args) { // Using LinkedList as a Queue Queue<String> queue = new LinkedList<>(); queue.add("Java"); queue.add("Python"); queue.add("C++"); // Reassigning to PriorityQueue queue = new PriorityQueue<>(); queue.add("Java"); queue.add("Python"); queue.add("C++"); // Reassigning to ArrayDeque queue = new ArrayDeque<>(); queue.add("Java"); queue.add("Python"); queue.add("C++"); } }
1.동적 크기 조정
2.목록 인터페이스 구현
import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); for (int num : list) { System.out.print(num + " "); } System.out.println(); // Inserting an element list.add(2, "Ruby"); // Accessing elements System.out.println("Element at index 3: + list.get(3)); // Removing an element list.remove(1); // Size of the list System.out.println(list.size()); // Check if list is empty System.out.println("Is list empty? + list.isEmpty()); // Check if list contains an element System.out.println(list.contains("Java")); // Index of an element System.out.println(list.indexOf("JavaScript")); // Last index of an element System.out.println(list.lastIndexOf("Ruby")); // Clear the list list.clear() } }
import java.util.Stack; public class StackExample { public static void main(String[] args) { // Create a stack Stack<String> stack = new Stack<>(); // Push elements onto the stack stack.push("Java"); stack.push("Python"); stack.push("C++"); // Print the stack after pushes System.out.println("Stack after pushes: " + stack); // Get the size of the stack int size = stack.size(); System.out.println("Size of stack: " + size); // Peek at the top element without removing it String topElement = stack.peek(); System.out.println("Top element (peek): " + topElement); // Pop an element from the stack String poppedElement = stack.pop(); System.out.println("Popped element: " + poppedElement); // Print the stack after pop System.out.println("Stack after pop: " + stack); // Check if the stack is empty boolean isEmpty = stack.isEmpty(); System.out.println("Is stack empty? " + isEmpty); // Get the size of the stack after pop size = stack.size(); System.out.println("Size of stack after pop: " + size); // Search for an element int position = stack.search("Java"); System.out.println("Position of element 'Java': " + position); } }
import java.util.LinkedList; public class LinkedListExample { public static void main(String[] args) { // Create a new LinkedList LinkedList<String> linkedList = new LinkedList<>(); // Add elements to the LinkedList linkedList.add("Java"); linkedList.add("Python"); linkedList.add("C++"); System.out.println("Initial LinkedList: " + linkedList); // Add element at specific index linkedList.add(1, "JavaScript"); System.out.println("After add(1, 'JavaScript'): " + linkedList); // Add element at the beginning linkedList.addFirst("HTML"); System.out.println("After addFirst('HTML'): " + linkedList); // Add element at the end linkedList.addLast("CSS"); System.out.println("After addLast('CSS'): " + linkedList); // Get elements System.out.println("First element: " + linkedList.getFirst()); System.out.println("Last element: " + linkedList.getLast()); System.out.println("Element at index 2: " + linkedList.get(2)); // Remove elements linkedList.remove(); // removes the first element System.out.println("After remove(): " + linkedList); linkedList.remove(2); // removes the element at index 2 System.out.println("After remove(2): " + linkedList); linkedList.removeFirst(); // removes the first element System.out.println("After removeFirst(): " + linkedList); linkedList.removeLast(); // removes the last element System.out.println("After removeLast(): " + linkedList); // Check if the list contains a specific element System.out.println("Contains 'Python': " + linkedList.contains("Python")); // Get the size of the list System.out.println("Size of LinkedList: " + linkedList.size()); // Clear the list linkedList.clear(); System.out.println("After clear(): " + linkedList); // Check if the list is empty System.out.println("Is LinkedList empty? " + linkedList.isEmpty()); } }
import java.util.HashMap; public class Main { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<>(); map.put("Alice", 90); map.put("Bob", 85); for (String key : map.keySet()) { System.out.println(key + ": " + map.get(key)); } } }
public class StringExamples { public static void main(String[] args) { // Creating an empty string String emptyString = new String(); System.out.println("Empty String: \"" + emptyString + "\""); // Creating a string from another string String original = "Hello, World!"; String copy = new String(original); System.out.println("Copy of original: " + copy); // Creating a string from a character array char[] charArray = {'J', 'a', 'v', 'a'}; String fromCharArray = new String(charArray); System.out.println("String from char array: " + fromCharArray); // Length of the string int length = original.length(); System.out.println("Length of original string: " + length); //Check if two strings are equal String str1 = "Java"; String str2 = "Java"; System.out.println(str1.equals(str2)); // true // Check if the string is empty boolean isEmpty = original.isEmpty(); System.out.println("Is original string empty? " + isEmpty); // Character at a specific index char charAt2 = original.charAt(2); System.out.println("Character at index 2 in original string: " + charAt2); // Convert to uppercase String upperCaseStr = original.toUpperCase(); System.out.println("Uppercase: " + upperCaseStr); // Convert to lowercase String lowerCaseStr = original.toLowerCase(); System.out.println("Lowercase: " + lowerCaseStr); // Character methods char ch1 = 'A'; char ch2 = 'a'; char ch3 = '1'; char ch4 = ' '; char ch5 = '\u2603'; // Unicode character for snowman System.out.println("isDigit('1'): " + Character.isDigit(ch3)); // true System.out.println("isLetter('A'): " + Character.isLetter(ch1)); // true System.out.println("isLetterOrDigit('a'): " + Character.isLetterOrDigit(ch2)); // true System.out.println("isLowerCase('a'): " + Character.isLowerCase(ch2)); // true System.out.println("isUpperCase('A'): " + Character.isUpperCase(ch1)); // true System.out.println("isWhitespace(' '): " + Character.isWhitespace(ch4)); // true System.out.println("toLowerCase('A'): " + Character.toLowerCase(ch1)); // 'a' System.out.println("toUpperCase('a'): " + Character.toUpperCase(ch2)); // 'A' // Reverse a string using StringBuilder String reversedStr = reverseUsingStringBuilder(original); System.out.println("Reversed string: " + reversedStr); } public static String reverseUsingStringBuilder(String str) { StringBuilder stringBuilder = new StringBuilder(str); stringBuilder.reverse(); return stringBuilder.toString(); } }
import java.io.File; import java.io.FileWriter; import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class Main { public static void main(String[] args) { // Write to file try (FileWriter writer = new FileWriter("example.txt")) { writer.write("Hello, file I/O!\n"); } catch (IOException e) { e.printStackTrace(); } // Read from file try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
(Note: When catching exceptions the more specific exceptions must be listed before the more general)
public class Main { public static int divide(int a, int b) { if (b == 0) { throw new IllegalArgumentException("Division by zero"); } return a / b; } public static void main(String[] args) { try { int result = divide(10, 0); System.out.println("Result: " + result); } catch (IllegalArgumentException e) { System.out.println("Error: " + e.getMessage()); } } }
An inner class is a class defined within another class.
public class OuterClass { private String outerField = "Outer Field"; class InnerClass { void display() { System.out.println("Accessing outer field: " + outerField); } } public static void main(String[] args) { OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); inner.display(); } }
public class OuterClass { private static String staticField = "Static Field"; static class StaticNestedClass { void display() { System.out.println("Accessing static field: " + staticField); } } public static void main(String[] args) { OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass(); nested.display(); } }
public class OuterClass { void method() { final String localVariable = "Local Variable"; class LocalInnerClass { void display() { System.out.println("Accessing local variable: " + localVariable); } } LocalInnerClass localInner = new LocalInnerClass(); localInner.display(); } public static void main(String[] args) { OuterClass outer = new OuterClass(); outer.method(); } }
class BaseClass { void display() { System.out.println("BaseClass display()"); } } public class Main { public static void main(String[] args) { BaseClass obj = new BaseClass() { @Override void display() { System.out.println("Anonymous inner class display()"); } }; obj.display(); } }
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> nums = new ArrayList<>(); nums.add(1); nums.add(2); nums.add(3); nums.add(4); nums.add(5); nums.replaceAll(n -> n * 2); for (int num : nums) { System.out.print(num + " "); } System.out.println(); } }
public class Main { public static void main(String[] args) { int day = 3; switch (day) { case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; case 4: System.out.println("Thursday"); break; case 5: System.out.println("Friday"); break; case 6: System.out.println("Saturday"); break; case 7: System.out.println("Sunday"); break; default: System.out.println("Invalid day"); break; } } }
Java does not use explicit pointers as C++ does;
public class Main { public static void main(String[] args) { String str1 = "Hello, World!"; String str2= "HELLO, WORLD!"; String lowerStr = str2.toLowerCase(); String upperStr = str1.toUpperCase(); System.out.println(lowerStr); // Output: hello, world! System.out.println(upperStr); // Output: HELLO, WORLD! } }
위 내용은 자바 코드 조각:)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!