Автор оригинального автора: 2008-06-17 15:26:20
LJBS
1. Перечислите 10 преимуществ языка JAVA.
a: Бесплатная, с открытым исходным кодом, кроссплатформенная (независимость от платформы), простая в использовании, полный набор функций, объектно-ориентированная, надежная, многопоточная, структурно-нейтральная, зрелая платформа для корпоративных приложений, беспроводных приложений.
2. Перечислите 10 терминов объектно-ориентированного программирования на JAVA.
а: пакет, класс, интерфейс, объект, атрибут, метод, конструктор, наследование, инкапсуляция, полиморфизм, абстракция, парадигма.
3. Перечислите 6 часто используемых пакетов в JAVA.
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4. Каковы функции и характеристики идентификаторов в JAVA. Функция: Идентификаторы используются для именования переменных, классов и методов. Характеристики: помимо букв, за которыми могут следовать символы подчеркивания «_» и «$». буквы, символы подчеркивания «_» и «$» или цифры.
Java чувствителен к регистру, и идентификаторы не являются исключением.
5.Каковы характеристики ключевых слов в JAVA? Составьте список не менее 20 ключевых слов.
Некоторые слова в Java, которым придается определенное значение и которые используются для специальных целей, называются ключевыми словами.
Все ключевые слова Java написаны строчными буквами, TURE, FALSE, NULL и т. д. не являются ключевыми словами Java;
goto и const, хотя и никогда не используются, зарезервированы как ключевые слова Java;
Всего в • имеется 51 ключевое слово Java.
абстрактное утверждение логического байта разрыва продолжить
класс catch char const double
по умолчанию do расширяет еще окончательное число с плавающей запятой
for goto long, если реализует импорт
собственный новый нулевой интерфейс экземпляра int
пакет частный защищенный общественный возврат короткий
Статический суперпереключатель strictfp синхронизировал это
в то время как void throw выдает временную попытку
изменчивый
6.Как классифицируются типы данных в JAVA?
Их можно разделить на простые типы данных и ссылочные типы данных:
Простые типы данных: числовой тип (byte, short, int, long, float double), символьный тип (char), логический тип (boolean);
Справочные типы данных: класс, интерфейс, массив.
7. Классификация и примеры операторов в JAVA
• Разделитель:,,;,[],()
• Арифметические операторы: +, ―, *, /, %, ++, ――
• Операторы отношения: >, <, >=, <=, ==, !=
• Булевы логические операторы: !, &, |, ^, &&, ||
• Битовые операторы: &, |, ^, ~, >>, < <, >>>
• Оператор присваивания: = Расширенный оператор присваивания: +=, ―=, *=, /=
• Оператор конкатенации строк: +
• Оператор формы: ()
8.Функция и использование ключевых слов super и this.
• Используйте super в классе Java для ссылки на компоненты родительского класса.
– Может использоваться для доступа к атрибутам, суперопределенным в родительском классе.
– Может использоваться для вызова метода-члена, определенного в родительском классе.
– Может использоваться для вызова конструктора суперкласса super в конструкторе подкласса.
– Прослеживаемость не ограничивается прямым родительским классом super.
Чтобы решить конфликт имен и проблему неопределенности переменных, вводится ключевое слово «this», обозначающее текущий объект метода, в котором он находится. Ява
– Конструктор относится к новому объекту, созданному конструктором.
– Метод относится к объекту, который вызывает метод.
• Использование ключевых словэто
– Ссылайтесь на переменные экземпляра и методы класса в методе или конструкторе самого класса.
– Передайте текущий объект в качестве параметра другим методам или конструкторам.
– Используется для вызова других перегруженных конструкторов
9. Что такое выражение в JAVA? Что он делает?
• Выражение представляет собой комбинацию операторов и операндов и является ключевым компонентом любого языка программирования.
• Выражения позволяют программистам выполнять математические вычисления, сравнение значений, логические операции и манипулирование объектами в Java.
• Некоторые примеры выражений:
–X
– Х+10
– Д=х+10
–Арр[10]
– студент.geName()
10. Составьте таблицу со списком всех модификаторов в JAVA и области их применения (могут ли они модифицировать конструкторы, свойства, свободные блоки и т. д.)
Построитель метода атрибута класса, внутренний класс бесплатного блока
общедоступный ГГГ Д Ю
защищено ГГ Да Да
(По умолчанию) ГГГГГГ
частный ГГ Д Ю
окончательный ГГ Д Г
абстрактное Да Да Да
статический Д ГГ
11. Напишите метод печати таблицы умножения с помощью цикла for.
/**
*Цикл for печатает таблицу умножения.
*/
publicvoid nineNineMultiTable()
{
for (int i = 1,j = 1; j <= 9; i++) {
System.out.print(i+"*"+j+"="+i*j+" ");
если (я == j)
{
я = 0;
j++;
Система.out.println();
}
}
}
12. Учитывая объект java.util.Date, как преобразовать его в строку в формате «2007-3-22 20:23:22»
/**
*Преобразуйте дату в строку фиксированного формата.
*@paramdate
*@returnstr
*/
общедоступная строка dateToStr (java.util.Date дата)
{
SimpleDateFormat sdf = new SimpleDateFormat("гггг-ММ-дд ЧЧ:мм:сс");
Строка str = sdf.format(дата);
вернуть ул;
}
13. Напишите метод, который может определить, является ли какое-либо целое число простым.
/**
* Определить, является ли какое-либо целое число простым
*@парамн
*@returnboolean
*/
publicboolean isPrimes(int n)
{
for (int i = 2; i <= Math.sqrt(n); i++) {
если (n%i==0)
{
возвратложь;
}
}
вернуть истину;
}
14. Напишите метод, который вводит любое целое число и возвращает его факториал.
/**
*Получить факториал любого целого числа
*@парамн
*@returnn !
*/
publicint факториал (int n)
{
//рекурсия
если (п == 1)
{
возврат 1;
}
вернуть n*факториал(n-1);
//нерекурсивный
// int multi = 1;
// for (int i = 2; i <= n; i++) {
// мульти*=я;
// }
// возвращаем мульти;
}
15. Напишите метод, который использует двоичный поиск, чтобы определить, существует ли какое-либо целое число в каком-либо целочисленном массиве. Если оно существует, верните его позицию индекса в массиве. Если оно не существует, верните -1.
/**
*Двоичный поиск позиции определенного целого числа в целочисленном массиве (рекурсивный)
*@paramdataset
*@paramdata
*@parambeginIndex
*@paramendIndex
*@returnindex
*/
publicintbinarySearch(набор данных int[],int data,int BeginIndex,int endIndex)
{
int MidIndex = (beginIndex+endIndex)/2;
if(data <набор данных[beginIndex]||data>набор данных[endIndex]||beginIndex>endIndex)return -1;
если (данные <набор данных[midIndex])
{
returnbinarySearch(набор данных, данные,beginIndex,midIndex-1);
}elseif(данные>набор данных[midIndex])
{
вернуть двоичныйSearch(набор данных, данные, MidIndex+1, endIndex);
}еще
{
вернуть средний индекс;
}
}
/**
*Двоичный поиск позиции определенного целого числа в целочисленном массиве (нерекурсивный)
*@paramdataset
*@paramdata
*@returnindex
*/
publicintbinarySearch(набор данных int[],int data)
{
интервал началаИндекс = 0;
int endIndex = dataset.length - 1;
интервал мидИндекс = -1;
if(data <набор данных[beginIndex]||данные>набор данных[endIndex]||beginIndex>endIndex)return -1;
while(beginIndex <= endIndex) {
MidIndex = (beginIndex+endIndex)/2;
если (данные <набор данных[midIndex]) {
конечныйИндекс = среднийИндекс-1;
} elseif(данные>набор данных[midIndex]) {
началоИндекс = среднийИндекс+1;
}еще
{
вернуть средний индекс;
}
}
вернуть -1;
}
16. Пример заводчика, кормящего животных кормом, отражает объектно-ориентированное мышление в JAVA и полезность интерфейсов (абстрактных классов).
пакет com.softeem.demo;
/**
*@authorleno
* Интерфейс животных
*/
интерфейс Животное
{
publicvoid eat(Еда, еда);
}
/**
*@authorleno
*тип животного: кошка
*/
класс Cat реализует Animal
{
publicvoid eat(Еда, еда)
{
System.out.println("Котенок ест"+food.getName());
}
}
/**
*@authorleno
*тип животного: собака
*/
класс Dog реализует Animal
{
publicvoid eat(Еда, еда)
{
System.out.println("Жевание щенка"+food.getName());
}
}
/**
*@authorleno
*Реферат по еде
*/
абстрактныйклассЕда
{
имя защищенной строки;
публичная строка getName() {
возвращаемое имя;
}
publicvoid setName (имя строки) {
это.имя = имя;
}
}
/**
*@authorleno
*Пищевая группа: рыба.
*/
класс Fish расширяет Food
{
общественная рыба (имя строки) {
это.имя = имя;
}
}
/**
*@authorleno
*Пищевая группа: кости.
*/
класс Кость расширяет еду
{
общественная кость (имя строки) {
это.имя = имя;
}
}
/**
*@authorleno
*Категория заводчика
*
*/
классКормушка
{
/**
*Заводчик скармливает определенный вид корма определенному виду животных.
*@paramanimal
*@paramfood
*/
publicvoidfeed(Животные,Пищевые продукты)
{
животное.есть(еда);
}
}
/**
*@authorleno
*Заводчики-испытатели кормят животных кормом.
*/
общественный класс TestFeeder {
publicstaticvoid main(String[] args) {
Фидер фидер = новый фидер ();
Животное животное=новая собака();
Food food=new Bone("мясная кость");
Feeder.feed(animal,food); //Кормим собаку мясными костями
животное = новый кот ();
food=new Fish("рыба");
Feeder.feed(animal,food); //Кормите кошку рыбой
}
}
18. Создайте одномодовый класс и загружайте файл свойств только один раз.
пакет com.softeem.demo;
импортировать java.io.FileInputStream;
импортировать java.io.FileNotFoundException;
импортировать java.io.IOException;
импортировать java.io.InputStream;
импортировать java.util.Properties;
/**
*@authorleno
*Один режим, гарантирующий, что файл свойств конфигурации загружается только один раз в течение всего приложения.
*/
публичный класс Синглтон {
экземпляр Privatestatic Singleton;
Privatestaticfinal String CONFIG_FILE_PATH = "E:\config.properties";
конфигурация частных свойств;
частный синглтон()
{
конфигурация = новые свойства ();
Входной поток есть;
пытаться {
is = новый FileInputStream (CONFIG_FILE_PATH);
config.load(есть);
есть.закрыть();
} catch (FileNotFoundException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
publicstatic Singleton getInstance()
{
если (экземпляр == ноль)
{
экземпляр = новый Синглтон ();
}
возврат экземпляра;
}
общедоступные свойства getConfig() {
возврат конфигурации;
}
publicvoid setConfig (конфигурация свойств) {
this.config = конфигурация;
}
}
л J2SE
19. Скопируйте каталог (файл) по указанному пути.
/**
* Скопируйте каталог или файл по указанному пути.
*@paramsource
*@paramtarget
*/
publicvoid копия (источник файла, целевой файл)
{
Файл tarpath = новый файл (цель, источник.getName());
если (источник.isDirectory())
{
tarpath.mkdir();
File[] dir = source.listFiles();
for (int i = 0; i <dir.length; i++) {
копировать (каталог [i], tarpath);
}
}еще
{
пытаться {
InputStream = новый FileInputStream (источник);
OutputStream os = новый FileOutputStream (tarpath);
байт [] буф = новый байт [1024];
интервал лен = 0;
while((len = is.read(buf))!=-1)
{
os.write(buf,0,len);
}
есть.закрыть();
ОС.закрыть();
} catch (FileNotFoundException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
}
20. Пример проблемы вывода средств из банка с использованием многопоточности в JAVA
packagecom.softeem.demo;
/**
*@authorleno
*Тип аккаунта
*По умолчанию существует баланс, и вы можете вывести деньги
*/
класс Аккаунт {
частныйфлоатбаланс = 1000;
publicfloat getBalance() {
возвратный баланс;
}
publicvoid setBalance (баланс с плавающей запятой) {
this.balance = баланс;
}
/**
*Способы вывода средств должны быть синхронизированы.
*@parammoney
*/
publicsynchronizedvoid вывод средств (плавающие деньги)
{
если(баланс>=деньги)
{
System.out.println("Взято"+деньги+"Юани!");
пытаться {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
баланс-=деньги;
}
еще
{
System.out.println("К сожалению, недостаточно средств!");
}
}
}
/**
*@authorleno
*банковская карта
*/
класс TestAccount1 расширяет поток {
личный кабинет;
public TestAccount1 (учетная запись) {
this.account = аккаунт;
}
@Override
publicvoid run() {
счет.вывод средств(800);
System.out.println("Баланс:"+account.getBalance()+"Юани!");
}
}
/**
*@authorleno
*Сберегательная книжка
*/
класс TestAccount2 расширяет поток {
личный кабинет;
public TestAccount2 (учетная запись) {
this.account = аккаунт;
}
@Override
publicvoid run() {
счет.вывод средств(700);
System.out.println("Баланс:"+account.getBalance()+"Юани!");
}
}
тест публичного класса
{
publicstaticvoid main(String[] args) {
Учетная запись = новая учетная запись();
TestAccount1 testAccount1 = новый TestAccount1(учетная запись);
testAccount1.start();
TestAccount2 testAccount2 = новый TestAccount2(учетная запись);
testAccount2.start();
}
}
21. Использование многопоточности в JAVA для примера проблемы продажи билетов на вокзале.
пакет com.softeem.demo;
/**
*@authorleno
*Продажа билетов
*/
класс SaleTicket реализует Runnable {
билеты = 100;
publicvoid run() {
в то время как (билеты > 0) {
распродажа();
//Или реализовать это вот так
// синхронизировано (это) {
// если (билеты > 0) {
// System.out.println(Thread.currentThread().getName() + "Продать первым"
// + (100 - билеты + 1) + "билеты");
// билеты--;
// }
// }
}
}
publicsynchronizedvoid sale() {
если (билеты > 0) {
System.out.println(Thread.currentThread().getName() + «Сначала продать»
+ (100 – билеты + 1) + «билеты»);
билеты--;
}
}
}
общественный класс TestSaleTicket {
publicstaticvoid main(String[] args) {
SaleTicket st = новый SaleTicket();
новый поток(st, «Окно № 1»).start();
новый поток(st, «Окно № 2»).start();
новый поток(st, «Окно № 3»).start();
новый поток(st, «Окно № 4»).start();
}
}
22. Пример проблем производителя и потребителя при использовании многопоточности в JAVA.
пакет com.softeem.demo;
класс Producer реализует Runnable
{
частный стек SyncStack;
публичный продюсер (стек SyncStack) {
this.stack = стек;
}
publicvoid run() {
for (int i = 0; i < stack.getProducts().length; i++) {
Строка product = «продукт»+i;
stack.push(продукт);
System.out.println("Произведено: "+product);
пытаться
{
Thread.sleep(200);
}
поймать (InterruptedException е)
{
е.printStackTrace();
}
}
}
}
класс Consumer реализует Runnable
{
частный стек SyncStack;
общественный потребитель (стек SyncStack) {
this.stack = стек;
}
publicvoid run() {
for(int i=0;i <stack.getProducts().length;i++)
{
Строковый продукт = stack.pop();
System.out.println("Израсходовано: "+product);
пытаться
{
Thread.sleep(1000);
}
поймать (InterruptedException е)
{
е.printStackTrace();
}
}
}
}
класс SyncStack
{
частные продукты String[] = новая String[10];
частныйинтиндекс;
publicsynchronizedvoid push (строковый продукт)
{
если (индекс==product.length())
{
пытаться {
ждать();
} catch (InterruptedException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
уведомить();
продукты[индекс]=продукт;
индекс++;
}
публичносинхронизированная строка pop()
{
если (индекс == 0)
{
пытаться {
ждать();
} catch (InterruptedException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
уведомить();
индекс--;
Строковый продукт = продукты [индекс];
возврат товара;
}
общественная строка [] getProducts() {
возврат продукции;
}
}
общественный класс TestProducerConsumer {
publicstaticvoid main(String[] args) {
Стек SyncStack = новый SyncStack();
Производитель p=новый производитель(стек);
Потребитель c = новый потребитель (стек);
новый поток (p).start();
новый поток (c).start();
}
}
23. Программирование для реализации передачи сериализованных объектов Student (sno, sname) по сети.
пакет com.softeem.demo;
импортировать java.io.IOException;
импортировать java.io.ObjectInputStream;
импортировать java.io.ObjectOutputStream;
импортировать java.io.Serializable;
импортировать java.net.ServerSocket;
импортировать java.net.Socket;
класс Student реализует Serializable {
частный интервал сно;
имя частной строки;
public Student(int sno, String name) {
this.sno = сно;
this.sname = имя;
}
общественный int getSno() {
возврат сно;
}
общественный недействительный setSno (int sno) {
this.sno = сно;
}
публичная строка getSname() {
вернуть имя;
}
public void setSname (String sname) {
this.sname = имя;
}
@Override
публичная строка toString() {
return "Номер студента:" + sno + ";Имя:" + имя;
}
}
класс MyClient расширяет поток {
@Override
общественный недействительный запуск () {
пытаться {
Socket s = новый Socket("localhost", 9999);
ObjectInputStream ois = новый ObjectInputStream(s.getInputStream());
Студент stu = (Студент) ois.readObject();
System.out.println("Клиентская программа получает объект студента, переданный из серверной программы >> " + stu);
оис.закрыть();
с.закрыть();
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
}
класс MyServer расширяет поток {
@Override
общественный недействительный запуск () {
пытаться {
ServerSocket ss = новый ServerSocket(9999);
Сокет s = ss.accept();
ObjectOutputStream ops = новый ObjectOutputStream(s.getOutputStream());
Student stu = новый студент(1, «Чжао Бэньшань»);
ops.writeObject(Сту);
опс.закрыть();
с.закрыть();
сс.закрыть();
} catch (IOException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
}
общественный класс TestTransfer {
public static void main(String[] args) {
новый MyServer().start();
новый MyClient().start();
}
}
л JDBC
24. Используйте компонент dom4j для анализа следующих файлов формата XML:
<?xml version="1.0"coding="UTF-8"?>
<генератор>
<table name="login" Operation="1">
<column name="username" handle="0">ааа </column>
<column name="password" handle="0">123 </column>
</таблица>
<table name="login" Operation="2">
<column name="id" handle="1">1 </column>
<column name="username" handle="0">bbb </column>
<column name="password" handle="0">444 </column>
</таблица>
<table name="login" Operation="3">
<column name="id" handle="1">4 </column>
</таблица>
</генератор>
Правила: <таблица>операция 1: вставка таблицы, обновление таблицы 2, удаление таблицы 3.
Таблица <column>handle 1 используется в качестве условия, таблица 0 используется в качестве поля операции.
Требование: Сгенерировать три оператора SQL в соответствии с правилами! (То есть создайте метод анализа XML-файла для создания строки, содержащей три оператора SQL)
/**
* Анализ XML-файла для создания строки, содержащей исполняемые операторы SQL.
*@paramxmlFileName
*@returnSQL
*/
общественная строка parseXmltoSQL (String xmlFileName) {
StringBuffer sbsql = новый StringBuffer();
Читатель SAXReader = новый SAXReader();
пытаться {
Документ document = reader.read(new File(xmlFileName));
Элемент element = document.getRootElement();
Итератор it = element.elementIterator("таблица");
в то время как (it.hasNext()) {
элемент = (Элемент) it.next();
//Получаем операции над таблицей
Строка oper = element.attributeValue("операция");
//Получаем имя таблицы
Строка tableName = element.attributeValue("name");
если ("1".equals(oper)) {
sbsql.append("вставить в").append(tableName);
Итератор it2 = element.elementIterator("столбец");
Строка имя_столбца1 = ноль;
Строка columnsValue1 = ноль;
Строка имя_столбца2 = ноль;
Строка columnsValue2 = ноль;
если (it2.hasNext()) {
элемент = (Элемент) it2.next();
имя_столбца1 = element.attributeValue("имя");
ColumnValue1 = element.getText();
}
если (it2.hasNext()) {
элемент = (Элемент) it2.next();
имя_столбца2 = element.attributeValue("имя");
ColumnValue2 = element.getText();
}
sbsql.append("("+columnName1+","+columnName2+")"+"values('"+columnValue1+"','"+columnValue2+"')n");
} elseif ("2".equals(oper)) {
sbsql.append("обновление").append(tableName);
Итератор it2 = element.elementIterator("столбец");
Строка имя_столбца1 = ноль;
Строка columnsValue1 = ноль;
Строка имя_столбца2 = ноль;
Строка columnsValue2 = ноль;
Строка имя_столбца3 = ноль;
Строка columnsValue3 = ноль;
если (it2.hasNext()) {
элемент = (Элемент) it2.next();
имя_столбца1 = element.attributeValue("имя");
ColumnValue1 = element.getText();
}
если (it2.hasNext()) {
элемент = (Элемент) it2.next();
имя_столбца2 = element.attributeValue("имя");
ColumnValue2 = element.getText();
}
если (it2.hasNext()) {
элемент = (Элемент) it2.next();
имя_столбца3 = element.attributeValue("имя");
columnsValue3 = element.getText();
}
sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' где "+columnName1+"="+columnValue1+"n");
}elseif ("3".equals(oper)) {
sbsql.append("удалить из").append(tableName);
Итератор it2 = element.elementIterator("столбец");
Строка имя_столбца1 = ноль;
Строка columnsValue1 = ноль;
если (it2.hasNext()) {
элемент = (Элемент) it2.next();
имя_столбца1 = element.attributeValue("имя");
ColumnValue1 = element.getText();
}
sbsql.append(" где "+columnName1+"="+columnValue1);
}
}
} catch (DocumentException e) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
вернуть sbsql.toString();
}
lJSP/СЕРВЛЕТ
25. Выпишите встроенные объекты JSP и объясните их функции.
request:request представляет объект HttpServletRequest. Он содержит информацию о запросе браузера и предоставляет несколько полезных методов для получения данных cookie и заголовков. response:response представляет объект HttpServletResponse и предоставляет несколько методов для настройки ответа, отправляемого обратно в браузер (например, файлы cookie, информацию заголовка и т. д.). Объект out:out является экземпляром javax.jsp.JspWriter и предоставляет несколько методов, которые вы можете использовать. можно использовать для отправки вывода обратно в браузер. pageContext: pageContext представляет объект javax.servlet.jsp.PageContext. Это API, используемый для облегчения доступа к различным областям пространств имен и объектам, связанным с сервлетами, и он объединяет методы общих функций, связанных с сервлетами. session:session представляет запрошенный объект javax.servlet.http.HttpSession. Сеанс может хранить информацию о статусе пользователя. Приложение: приложение представляет объект javax.servle.ServletContext. Это помогает найти информацию о механизме сервлетов и среде сервлетов. config:config представляет объект javax.servlet.ServletConfig. Этот объект используется для доступа к параметрам инициализации экземпляра сервлета. page:page представляет экземпляр сервлета, созданный на этой странице.
исключение: объект исключения является объектом исключения. Этот объект генерируется при возникновении исключения во время работы страницы. Если страница JSP хочет использовать этот объект, она должна установить для isErrorPage значение true, иначе она не сможет скомпилироваться. На самом деле это аналог java.lang.Throwable.