-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Seção 03: Fundamentos #49
Comments
📌 Inferência de tipoSurgiu a partir do Java 10 package fundamentos;
public class Inferencia {
public static void main(String[] args){
double a = 4.5;
System.out.println();
var b = 4.5;
// Aqui a variável será do tipo do valor que eu colocar (isso é inferência e tem haver com o quê o Mulero disse)
var c = "Texto"; // A variável c será do tipo String
System.out.println(c);
c = "Outro texto";
System.out.println(c);
// Mas eu não posso mudar o tipo da variável!
// IMPORTANTE!
double d;
d = 123.65;
// Eu não consigo fazer isso utilizando o 'var' pois eu preciso já inicializar ela!
// Porque só assim o Java consegue inferir o tipo dessa variável
}
} |
📌Notação Pontopackage fundamentos;
public class NotacaoPonto {
public static void main(String[] args) {
double a = 2.3;
String s = "Bom dia X";
System.out.println(s);
s = s.toUpperCase();
System.out.println(s);
s = s.replace("X", "Senhora");
System.out.println(s);
s = s.concat("!!!!");
System.out.println(s);
String x = "Leo".toLowerCase();
System.out.println(x);
String y = "Bom dia X"
.replace("X", "Gui")
.toLowerCase()
.concat("!!!!");
System.out.println(y);
// Eu posso quebrar as linhas nos ponto
// TIPOS PRIMITIVOS NÃO TEM O OPERADOR "."
}
} |
📌 Import (CTRL + SHIFT + O)package fundamentos;
import java.util.Date;
import javax.swing.JButton;
public class Import {
public static void main(String[] args) {
String s = "Bom dia!";
System.out.println(s);
Date d = new Date();
System.out.println(d);
JButton botao = new JButton();
}
} |
📌 Tipo Stringpackage fundamentos;
// String é IMUTÁVEL. Eu só consigo SUBSTITUIR um valor, e não modificar o valor original!
public class TipoString {
public static void main(String[] args) {
System.out.println("Olá pessoal".charAt(0));
String s = "Boa tarde";
System.out.println(s.concat("!!!"));
System.out.println(s.toLowerCase().startsWith("boa"));
System.out.println(s.endsWith("tarde"));
System.out.println(s.length());
System.out.println(s.equalsIgnoreCase("boa tarde")); // Isso substitui o toLowerCase e o toUpperCase
var nome = "Pedro";
var sobrenome = "Santos";
var idade = 33;
var salario = 12344.987;
System.out.printf("O senhor %s %s tem %d anos e ganha R$ %.2f", nome,
sobrenome, idade, salario);
String frase = String.format("\nO senhor %s %s tem %d anos e ganha R$ %.2f", nome,
sobrenome, idade, salario);
System.out.println(frase);
System.out.println("Frase qualquer".contains("qual"));
System.out.println("Frase qualquer".indexOf("qual"));
System.out.println("Frase qualquer".substring(6));
System.out.println("Frase qualquer".substring(6, 10));
}
} |
📌 Console (Buffer de entrada - Bug do nextLine)package fundamentos;
import java.util.Scanner;
public class Console {
public static void main(String[] args) {
System.out.println("Bom");
System.out.printf("Valores: %d %d %d%n", 1, 2, 3);
System.out.print("a");
System.out.printf("Nome: %s%n", "João");
Scanner entrada = new Scanner(System.in);
entrada.close();
}
} Passando para esclarecer uma particularidade dos métodos nextInt() e nextDouble(). Ambos os métodos têm a mesma particularidade, mas vou explicá-la através do nextInt() com o exemplo abaixo. Scanner teclado = new Scanner(System.in);
System.out.println("Qual a sua idade?");
int idade = teclado.nextInt();
System.out.println("Qual o seu nome?");
String nome = teclado.nextLine();
System.out.println("Qual o seu sobrenome?");
String sobrenome = teclado.nextLine();
teclado.close(); À primeira vista, parece que está tudo bem com este código. Mas quando o rodamos, o que é impresso no console (contendo os inputs) é o seguinte: 1 - Qual a sua idade? 25 Isso acontece por causa da maneira como o nextInt() faz a leitura dos valores. Esse método faz a leitura de um único número, por exemplo, 58 ou 958. Mas quando digitamos os inputs, além do valor que deve ser lido, também apertamos enter, o que gera um caracter "\n" no buffer de entrada (fila de coisas que devem ser lidas), que é uma representação do enter. Então, o que acontece é: "Qual a sua idade?" é impresso, digitamos o valor e apertamos enter. Quando fazemos isso, o buffer de entrada fica com o conteúdo "25\n", e quando o nextInt() faz a leitura, ele lê apenas o 25, deixando o "\n" para trás. Depois disso, "Qual o seu nome?" é impresso, e o método nextLine() vai ler tudo que estiver no buffer de entrada até encontrar um "\n". Como o nextInt() deixou um "\n" para trás, é esse o valor que o nextLine() lê. Isso conclui a leitura e a próxima linha de código, que é "Qual o seu sobrenome?", é impressa. Para resolver esse problema, precisamos "pegar" o "\n" que o nextInt() não lê. Isso pode ser feito colocando um comando nextLine() depois do nextInt(), de modo que o código abaixo vai funcionar da maneira como queríamos. Scanner teclado = new Scanner(System.in);
System.out.println("Qual a sua idade?");
int idade = teclado.nextInt();
teclado.nextLine(); //lê o "\\\\n" que o teclado.nextInt() deixa para trás.
System.out.println("Qual o seu nome?");
String nome = teclado.nextLine();
System.out.println("Qual o seu sobrenome?");
String sobrenome = teclado.nextLine();
teclado.close(); |
📌 Objeto vs Primitivopackage fundamentos;
public class PrimitivoVsObjeto {
public static void main(String[] args) {
// Wrappers (aquilo que envolve)
// Wrapper são a versão objeto dos tipos primitivos
// 8 tipos primitivos = 7 Wrappers
int a = 123;
System.out.println();
Integer b = 123;
System.out.println();
}
} |
📌 Wrapperspackage fundamentos;
public class Wrapper {
public static void main(String[] args) {
Byte b = 100;
Short s = 1000;
Integer i = 10000;
Integer convertedInteger = Integer.parseInt("1000");
Long l = 100000L;
System.out.println(b.byteValue());
System.out.println(s.toString());
System.out.println(convertedInteger);
Float f = 123F;
System.out.println(f);
Double d = 124.2;
System.out.println(d);
Boolean bo = Boolean.parseBoolean("true");
System.out.println(bo);
System.out.println(bo.toString());
Character c = '#';
System.out.println(c + "...");
}
} |
📌 Conversão de tipos primitivosExistem conversões que eu não consigo fazer Quando há perdão de informação, o java pede que o programador seja explícito nessa conversão (Setas vermelhas). package fundamentos;
public class ConversãoTiposPrimitivosNumericos {
public static void main(String[] args) {
double a = 1; // Conversão implícita
float b = (float) 1.0; // Conversão explícita (isso é o CASTING)
int c = 300;
byte d = (byte) c; // Conversão explícita (isso é o CASTING)
System.out.println(d);
double e = 1.9999;
int f = (int) e; // Conversão explícita (isso é o CASTING)
System.out.println(f);
}
} |
📌 Conversão de números para (STRING)package fundamentos;
public class ConjversaoNumeroString {
public static void main(String[] args) {
Integer num1 = 10000;
System.out.println(num1.toString().length());
// Eu também posso converter um tipo primitivo para string
int num2 = 100000;
System.out.println(Integer.toString(num2));
System.out.println(("" + num2).length());
/*
* Integer.toString();
* Double.toString();
* Long.toString();
* Boolean.toString();
*/
}
} |
📌 Conversão de STRING para Números
package fundamentos;
public class ConversaoDeStringParaNumero {
public static void main(String[] args) {
String valor1 = "3.4";
String valor2 = "3.4";
double numero1 = Double.parseDouble(valor1);
double numero2 = Double.parseDouble(valor2);
double soma = numero1 + numero2;
System.out.println("Soma = " + soma);
System.out.println("Media = " + soma / 2);
}
} |
📌 OperadoresO número de operadores tem haver com o número de operandos em um operador.
AritméticosRelacionaisLógicosAtribuiçãoFormas em que o operador por aparecer:
Ordem de precedênciaOperadores+Java+-+Tabela+de+Precedência.pdf Aritméticospackage fundamentos;
public class OperadoresAritmeticos {
public static void main(String[] args) {
System.out.println(2 + 3);
var x = 34.56; // Lembrando que é inferência
double y = 2.2;
System.out.println(x + y);
System.out.println(x - y);
System.out.println(x * y);
System.out.println(x / y);
int a = 8;
int b = 3;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / (double) b); // Assim eu consigo pegar o valor 'quebrado'
// Módutlo (%)
System.out.println(a % b); // Pega o resto da divisão
}
} 📌 Lógicospackage fundamentos.operadores;
public class OperadoresLogicos {
public static void main(String[] args) {
boolean condicao1 = true;
boolean condicao2 = 3 > 7;
System.out.println(condicao1 && !condicao2);
System.out.println(condicao1 || condicao2);
System.out.println(condicao1 ^ condicao2); // Ou exclusivo
System.out.println(!condicao1);
System.out.println(!condicao2);
}
} // O 'OU' EXCLUSIVO um deles precisa ser false e o outro true 📌Operadores RelacionaisEles possuem uma relação com os operadores lógicos! 📌Operador Ternáriopackage fundamentos.operadores;
public class Ternario {
public static void main(String[] args) {
double media = 7.6;
String resultadoParcial = media >= 5.0 ? "Aprovado" : "Recuperação";
String resultadoFinal = media >= 7.0 ?
"Aprovado" : "Recuperação";
System.out.println("O aluno está " + resultadoFinal);
}
} |
📌 Comparação de Stringpackage fundamentos;
import java.util.Scanner;
public class TipoStringEquals {
public static void main(String[] args) {
System.out.println("2" == "2");
String s1 = new String("2");
System.out.println("2" == s1); // Não funciona
// A forma correta é essa:
System.out.println("2".equals(s1));
Scanner entrada = new Scanner(System.in);
// o next() retira os espaços em branco
// o nextLine() mantem os espacos em branco
String s2 = entrada.next().trim(); // trim() remove os espacos em brancos
System.out.println("2".equals(s2));
// A moral é sempre usar equals quando forma tratar comperação de igualdade de Stringss
}
} |
📌 JRE vs JDKJava -> .class JVM..java-> .class (ByteCode)
|
📌 Java vs JavacPara compilar = javac nameOfFile.java |
📌Variáveis e Constantes
Challenge
Transformar Fahrenheit em Celsius
Obs: jshell é um comando que faz entrar no interpretador do Java
The text was updated successfully, but these errors were encountered: