//инициирую стринг
String gl = null;
// говорю
gl=gl+char k
//потом если сделать
System.out.println(gl);
//выводится
nullk
//не понимаю зачем тогда нужен null? проще тогда просто сделать
String gl = "";
//---------------------------------------------------------------------------------------------------------------------------------------------------
package com.javarush.task.task09.task0923;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
/*
Гласные и согласные
*/
public class Solution {
public static char[] vowels = new char[]{'а', 'я', 'у', 'ю', 'и', 'ы', 'э', 'е', 'о', 'ё'};
public static void main(String[] args) throws Exception {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String gl=null;// выводится как null +....
String sgl=null; выводится как null +....
String line =reader.readLine();
for (int i=0;i<line.length();i++){
if (line.charAt(i)==' '){continue;}
else
if (isVowel(line.charAt(i))){gl=gl+line.charAt(i)+" ";}
else {sgl=sgl+line.charAt(i)+" ";}
}
System.out.println(gl);
System.out.println(sgl);
//напишите тут ваш код
}
// метод проверяет, гласная ли буква
public static boolean isVowel(char c) {
c = Character.toLowerCase(c); // приводим символ в нижний регистр - от заглавных к строчным буквам
for (char d : vowels) { // ищем среди массива гласных
if (c == d) {
return true;
}
}
return false;
}
}
Herr Ives
30 уровень
зачем нужен null
Решен
Комментарии (18)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
4 января 2020, 15:34
А почему ты решил, что здесь нужен null?
Или ты считаешь, что если он не нужен здесь, то он не нужен вообще?
0
Herr Ives
4 января 2020, 15:43
это было мое понимание для чего нужен нулл. теперь я не понимаю для чего он нужен
0
Ksenia Volkova Java Developer в DXC Master
4 января 2020, 15:52
https://javarush.com/groups/posts/1080-9-vejshey-o-null-v-java
0
Herr Ives
4 января 2020, 15:59
ну помоему свое понимание я из этой статьи как раз и подчепнул
"Так же, как каждый примитив имеет значение по умолчанию, например, у int это 0, у boolean это false, null это значение по умолчанию любых ссылочных типов, проще говоря, для всех объектов. Так же, как при создании логической переменной ее значение по умолчанию равно false, так и любые ссылочные переменные в Java по умолчанию будут равны null."
0
Herr Ives
4 января 2020, 15:59
Несмотря на распространенное заблуждение, null это не объект (Object) и ни тип. Это просто специальное значение, которое может быть назначено любому ссылочному типу, и Вы можете привести null к любому типу, как показано ниже:
String str = null; // null can be assigned to String
0
Ksenia Volkova Java Developer в DXC Master
4 января 2020, 16:10
Я, если честно, вообще не понимаю, как связана концепция null с тем, что у тебя происходит в коде.
В твоем случае - это просто особенность конкатенации строк. Объединение строк в java происходит с использованием метода append класса StringBuilder.
А про этот метод в документации сказано:
0
IceBergMaster
4 января 2020, 16:10
А в чем собственно вопрос?
Грубо говоря, null обозначает отсутствие чего-либо в определенном месте, например объекта по ссылке.
0
Herr Ives
4 января 2020, 19:14
я думал что null нужен для инициализации. и если к строке null прибавить еще стринг то останется только тот стринг который прибавили. а выводится nullстринг. получается null это реально такая строка или откуда он берется в выводе? и зачем?
0
Herr Ives
4 января 2020, 19:19
ладно видимо пока не дорос. спасибо за ответы
0
IceBergMaster
4 января 2020, 19:19
Откуда он берётся в строке, выше уже ответили.
"получается null это реально такая строка" - ни в коем случае, стока "null" будет создана отдельно при конкатенации.
0
Herr Ives
5 января 2020, 14:24
тогда зачем он нужен в стрингах7 нужно ли его в стрингах вообще использовать7
0
IceBergMaster
5 января 2020, 18:26
Ты почему-то пытаешься из частного случая сделать общее правило.
null нужен для любого ссылочного типа, String здесь роли не играет, дело же не в том, что ты будешь его прям использовать, а в том, что в большинстве случаев он и так там будет, и без твоего вмешательства.
Если у тебя будет класс "Человек", с полем имя, ты как его напишешь, так?
Или так? Если ты остановишься на втором варианте, то здесь можно поспорить.
Если какой-то Вася Пупкин захочет использовать твоих "человеком", то для проверки валидности и наличия поля он всегда может использовать универсальную конструкцию и не важно, что name это String, так можно проверить любую ссылочную переменную. А в случае String name = ""; такая конструкция скажет "всё ок, имя на месте", что не отвечает действительности. 0
Herr Ives
6 января 2020, 12:32
первый вариант String name; у меня копилятор не пропускает, требует инициализации
то есть нулл использовать по сути правильно.
тогда как мне реализовать
gl=gl+line.charAt(i)+" ";
0
Ksenia Volkova Java Developer в DXC Master
6 января 2020, 12:38
Не пропускает, потому что локальные переменные (которые ты в методах объявляешь) не имеют значения по умолчанию, как поля класса.
В этом случае как раз логично использовать String name = "" - потому что тебе нужна пустая строка, к которой ты что-то будешь прибавлять.
Если бы у тебя дальше была не конкатенация, а, например, присваивалось какое-то значение - можно было бы использовать null.
0
IceBergMaster
6 января 2020, 12:44
"первый вариант String name; у меня копилятор не пропускает" - как уже говорила Ксения, нужно понимать разницу, между локальными переменными и полями класса.
0
Herr Ives
6 января 2020, 12:45
хорошо, спасибо всем
0
IceBergMaster
6 января 2020, 12:52
Норм
Не норм 0
Herr Ives
6 января 2020, 12:53
спасибо
0