Operador (1-4 puntos clave para dominar)
- Operadores aritméticos: +, -, *, /,%, ++, -
- Operador de asignación: =
- Operadores relacionales:>, <,> =, <=, == ,! = Instanceof
- Operadores lógicos: &&, ||,!
- Operadores a nivel de bits: &, |, ^, ~, >>, <<, >>> (entiendo !!!)
- Operadores condicionales:?,:
- Operadores de asignación extendida: + =, - =, * =, / =
//二元运算符
//ctrl+D :复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
long a = 122222222222222222L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println(c+d); //int
//关系运算符返回的结果:正确,错误 布尔值
int a = 10;
int b = 20;
int c = 22;
System.out.println(c%b); //取余
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
Operador de auto-incremento y decremento
//++ -- 自增 自减
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a++ a = a + 1
System.out.println(a);
int c = ++a; //执行完这行代码后,先自增,后赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算
//使用工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
Operador lógico
//逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b));//逻辑与,两个变量都为真,结果才为true
System.out.println("a || b :"+(a || b)); //逻辑或,两个变量有一个为真,则结果才为true
System.out.println("! (a && b):"+!(a && b)); //逻辑非,如果为真,则变为假
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//逻辑与,如果c<4为假,就不会执行c++<4;
System.out.println(d);
System.out.println(c); //c的值为5
Operación de bits
/*
* A = 0011 1100
* B = 0000 1101
*
* A&B = 0000 1100 //全1为1,有0为0
* A|B = 0011 1101 //全0为0,有1为1
* A^B = 0011 0001 //相同为0,不同为1
* ~B = 1111 0010 //取反
*
*
* */
//2*8=16 2*2*2*2
//效率极高!!!
//<< *2
//>> /2
/*
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); //16
Operador ternario y resumen
int a = 10;
int b = 20;
a += b; //a = a + b
System.out.println(a);
//字符串连接符 + ,String
System.out.println(""+a+b); //3020
System.out.println(a+b+""); //50
//三元运算符
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ?"不及格":"及格"; //必须掌握
//if
System.out.println(type);
Mecanismo de paquete
package pkg1[. pkg2[. pkg3……]];
Generalmente use la inversión del nombre de dominio de la compañía como el nombre del paquete:
com.baidu.www
Para poder utilizar los miembros de un determinado paquete, necesitamos importar explícitamente el paquete en el programa Java. Use la declaración "import" para completar esta función
import package1[.package2……].(Classname|*);
package com.kuang.operator;
import com.kuang.operator.*; //导入全部 *为通配符
javadoc
El comando javadoc se usa para generar su propia documentación de API
Información de parámetros
- @autor nombre del autor
- Número de versión de @version
- @since indica que se requiere la primera versión de jdk utilizada
- Nombre del parámetro @param
- @ valor de retorno de retorno
- @ arroja excepción lanzada
package com.kuang.operator;
/**
* @author Hao
* @version 1.0
* @since 1.8
*/
public class Demo10 {
String name;
/**
* @author Hao
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
//通过命令行 javadoc 参数 java文件
//面向百度编程
}
control de flujo de java
- Escáner de interacción del usuario
- Estructura secuencial
- Seleccionar estructura
- Estructura cíclica
- romper y continuar
Objeto escáner
Obtenga la entrada del usuario a través de la clase Scannery
Sintaxis básica:
Scanner s = new Scanner(System.in);
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = scanner.nextLine();
System.out.println("输入的内容为:"+str);
scanner.close();
}
}
La cadena de entrada se obtiene mediante los métodos next () y nextLine () de la clase Scanner. Antes de leer, generalmente necesitamos usar hasNext () y hasNextLine () para determinar si hay datos de entrada.
next () hasNext ()
- La entrada debe completarse después de leer los caracteres válidos
- El método next () eliminará automáticamente los espacios en blanco encontrados antes de ingresar caracteres válidos.
- Solo después de ingresar un carácter válido puede el espacio ingresado después de ser utilizado como separador o terminador
- next () no puede obtener una cadena con espacios
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建一个扫描器对象,用于存放键盘收据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接受:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
String str = scanner.next(); //程序会等待用户输入完毕
System.out.println("输出的内容是:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
}
next () hasNextLine ()
- Con Enter como el carácter final, el método NextLine () devuelve todos los caracteres antes de ingresar el retorno de carro.
- Ponerse en blanco
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//创建一个扫描器对象,用于存放键盘收据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNextLine()){
//使用nextLine方式接收
String str = scanner.nextLine();
System.out.println("输入的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
}
Uso avanzado de escáner
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
}else {
System.out.println("输入的不是整数数据!");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:"+f);
}else {
System.out.println("输入的不是小数数据!");
}
Practica
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
//和
double sum = 0;
//计算输入了多少个数字
int i = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
i = i + 1; // i++
sum = sum + x;
System.out.println("你输入了第"+i+"个数据,当前结果sum="+sum);
}
System.out.println("这"+i+"个数字的和是:"+sum);
System.out.println("这"+i+"个数字的平均值是:"+(sum/i));
scanner.close();
}
}
Estructura secuencial
- La estructura básica de Java es una estructura secuencial . A menos que se especifique lo contrario, se ejecutará frase por frase en orden.
- La estructura secuencial es la estructura de algoritmo más simple.
- Es una estructura de algoritmo básica indispensable para cualquier algoritmo.
Seleccionar estructura
- si estructura de selección única
- si estructura de doble selección
- si estructura de opción múltiple
- Anidado si estructura
- cambiar la estructura de selección múltiple
si estructura de selección única
Sintaxis:
if(){
//如果布尔表达式为true将执行的语句
}
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
// equals()判断字符串是否相等
if (s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
si estructura de doble selección
Sintaxis:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//考试分数大于60分就是及格,小于60分就不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score>60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
si estructura de opción múltiple
Sintaxis:
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
//考试分数大于60分就是及格,小于60分就不及格
Scanner scanner = new Scanner(System.in);
/*
if 语句至多有1个else语句,else 语句在所有的 else if 语句之后。
一旦其中一个 else if 语句检测为 true, 其他的 else if 以及 else 语句都将跳过执行。
*/
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score==100){
System.out.println("S级");
}else if (score<100 && score>=90){
System.out.println("A级");
}else if (score<90 && score>=80){
System.out.println("B级");
}else if (score<80 && score>=70){
System.out.println("C级");
}else if (score<70 && score>=60){
System.out.println("D级");
}else if (score<60 && score>=0){
System.out.println("不及格");
}else{
System.out.println("成绩不合法!");
}
scanner.close();
}
}
Anidado si estructura
Sintaxis:
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
cambiar la estructura de selección múltiple
Los tipos de variables en la declaración de cambio pueden ser:
- byte 、 corto 、 int 或 char
- el interruptor admite el tipo de cadena
- la etiqueta del caso debe ser una constante de cadena o un literal
Sintaxis:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
public class Demo4 {
public static void main(String[] args) {
// case穿透(无break) //switch 匹配一个具体的值
char grade = 'F';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中等");
break;
case 'D':
System.out.println("及格");
break;
case 'E':
System.out.println("不及格");
default:
System.out.println("未知等级");
}
}
}
Código 01
package sturct;
public class Demo5 {
public static void main(String[] args) {
String name = "小明";
//字符的本质还是数字
//反编译 java---class(字节码文件)-------反编译(IDEA)
switch (name){
case "小明":
System.out.println("小明");
break;
case "孙悟空":
System.out.println("孙悟空");
break;
default:
System.out.println("弄啥嘞!");
}
}
}
Código 02 (código descompilado)
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package sturct;
public class Demo5 {
public Demo5() {
}
public static void main(String[] args) {
String name = "小明";
byte var3 = -1;
switch(name.hashCode()) {
case 756703:
if (name.equals("小明")) {
var3 = 0;
}
break;
case 23271124:
if (name.equals("孙悟空")) {
var3 = 1;
}
}
switch(var3) {
case 0:
System.out.println("小明");
break;
case 1:
System.out.println("孙悟空");
break;
default:
System.out.println("弄啥嘞!");
}
}
}
Estructura cíclica
- mientras bucle
- hacer mientras bucle
- para bucle
- Java5 presenta un bucle for mejorado utilizado principalmente para matrices
mientras bucle
Sintaxis:
while(布尔表达式){
//循环内容
}
- Mientras la expresión booleana sea verdadera, el bucle continuará ejecutándose.
- En la mayoría de los casos detendremos el ciclo, necesitamos una forma de invalidar la expresión para finalizar el ciclo.
- Un pequeño número de situaciones requiere que el bucle se ejecute todo el tiempo, como el monitoreo de respuesta de solicitud del servidor.
- Si la condición del bucle siempre es verdadera, causará un bucle infinito [bucle inactivo]. En la programación comercial normal, trate de evitar un bucle infinito. Afectará el rendimiento del programa o hará que el programa se congele y se bloquee.
package sturct;
public class Demo6 {
public static void main(String[] args) {
//输出1~100
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
}
}
package sturct;
public class Demo7 {
//死循环
public static void main(String[] args) {
while (true){
//等待客户端连接
//定时检查
//。。。。。
}
}
}
Practica
package sturct;
public class Demo8 {
public static void main(String[] args) {
//计算1+2+3+……+100=?
//高斯的故事
int i = 0;
int sum = 0;
while (i<=100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}