首页 > 编程语言 >Java语法基础

Java语法基础

时间:2023-02-19 02:11:50浏览次数:40  
标签:char Java int 基础 System 语法 println public out

关键字和保留字

  1. enum: 用于定义一组固定的常量(枚举)。

  2. abstract: 用于声明抽象类,以及抽象方法。

  3. break: 用于中断循环或 switch 语句。

  4. catch: 用于捕获 try 语句中的异常。

  5. continue: 用于继续下一个循环,可以在指定条件下跳过其余代码。

  6. default: 用于指定 switch 语句中除去 case 条件之外的默认代码块。

  7. extends: 用于指示一个类是从另一个类或接口继承的。

  8. final: 用于指示该变量是不可更改的。

  9. finally:try-catch 配合使用,表示无论是否处理异常,总是执行 finally 块中的代码。

  10. implements: 用于实现接口。

  11. import: 用于导入对应的类或者接口。

  12. instanceof: 用于判断对象是否属于某个类型(class)。

  13. interface: 用于声明接口。

  14. native: 用于指定一个方法是通过调用本机接口(非 Java)实现的。

  15. new: 用于创建一个新的对象。

  16. package: 用于声明类所在的包。

  17. private: 一个访问权限修饰符,表示方法或变量只对当前类可见。

  18. protected: 一个访问权限修饰符,表示方法或变量对同一包内的类和所有子类可见。

  19. public: 一个访问权限修饰符,除了可以声明方法和变量(所有类可见),还可以声明类。main() 方法必须声明为 public。

  20. strictfp: 并不常见,通常用于修饰一个方法,确保方法体内的浮点数运算在每个平台上执行的结果相同。

  21. static: 表示该变量或方法是静态变量或静态方法。

  22. super: 可用于调用父类的方法或者字段。

  23. synchronized: 用于指定多线程代码中的同步方法、变量或者代码块。

  24. this: 可用于在方法或构造函数中引用当前对象。

  25. throw: 主动抛出异常。

  26. throws: 用于声明异常。

  27. transient: 修饰的字段不会被序列化。

  28. volatile: 保证不同线程对它修饰的变量进行操作时的可见性,即一个线程修改了某个变量的值,新值对其他线程来说是立即可见的。

“goto 在 C语言中叫做‘无限跳转’语句,在 Java 中,不再使用 goto 语句,因为无限跳转会破坏程序结构。”

“const 在 C语言中是声明常量的关键字,在 Java 中可以使用 public static final 三个关键字的组合来达到常量的效果。”

Java命名规范

Service/DAO 层的方法命名规约:

  • 获取单个对象的方法用 get 做前缀

  • 获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects

  • 获取统计值的方法用 count 做前缀

  • 插入的方法用 save/insert 做前缀

  • 删除的方法用 remove/delete 做前缀

  • 修改的方法用 update 做前缀

Java中的数据类型

1)基本数据类型

基本数据类型是 Java 语言操作数据的基础,包括 boolean、char、byte、short、int、long、float 和 double,共 8 种。

2)引用数据类型

除了基本数据类型以外的类型,都是所谓的引用类型。常见的有数组(对,没错,数组是引用类型)、class(也就是类),以及接口(指向的是实现接口的类的对象)。

关于 int 和 char 类型互转

2)可以使用 Character.forDigit() 方法将整型 int 转换为字符 char。

public class SimpleTesting {
   public static void main(String[] args) {
       //radix 10 is for decimal number, for hexa use radix 16
       int radix = 10;
       int value_int = 6;
       char value_char = Character.forDigit(value_int , radix);
       System.out.println(value_char );
  }
}

radix 为基数,十进制为 10,十六进制为 16。

3)可以使用 int 的包装器类型 Integer 的 toString() 方法+String 的 CharAt() 方法转成 char

public class SimpleTesting {
   public static void main(String[] args) {
       int value_int = 1;
       char value_char = Integer.toString(value_int).charAt(0);
System.out.println(value_char );
  }
}

4)char 转 int

当然了,如果只是简单的 char 转 int,直接赋值就可以了。

int a = 'a';

因为发生了自动类型转换。

Java数据类型转换

在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。转换规则如下:

  • 数值型数据的转换:byte→short→int→long→float→double。

  • 字符型转换为整型:char→int。

以上数据类型的转换遵循从左到右的转换顺序,最终转换成表达式中表示范围最大的变量的数据类型。

 

自动类型提升有好处,但它也会引起令人疑惑的编译错误。例如,下面看起来正确的程序却会引起问题:

byte b = 50;

b = b * 2; // Type mismatch: cannot convert from int to byte

如上所示,第二行会报“类型不匹配:无法从int转换为byte”错误。

该程序试图将一个完全合法的 byte 型的值 50*2 存储给一个 byte 型的变量。但是当表达式求值的时候,操作数被自动的提升为 int 型,计算结果也被提升为 int 型。这样表达式的结果现在是 int 型,不强制转换它就不能被赋为 byte 型。

所以应该使用一个显示的强制类型转换,例如:

byte b = 50;

b = (byte)(b*2);

这样就能产生正确的值 100。

注意:char 类型比较特殊,char 自动转换成 int、long、float 和 double,但 byte 和 short 不能自动转换为 char,而且 char 也不能自动转换为 byte 或 short。

Java运算符

img

img

img

Java流程控制语句

枚举作为 switch 语句的变量也很常见,来看例子:

public class SwitchEnumDemo {
   public enum PlayerTypes {
       TENNIS,
       FOOTBALL,
       BASKETBALL,
       UNKNOWN
  }

   public static void main(String[] args) {
       System.out.println(createPlayer(PlayerTypes.BASKETBALL));
  }

   private static String createPlayer(PlayerTypes playerType) {
       switch (playerType) {
           case TENNIS:
               return "网球运动员费德勒";
           case FOOTBALL:
               return "足球运动员C罗";
           case BASKETBALL:
               return "篮球运动员詹姆斯";
           case UNKNOWN:
               throw new IllegalArgumentException("未知");
           default:
               throw new IllegalArgumentException(
                       "运动员类型: " + playerType);

      }
  }
}

输出:

篮球运动员詹姆斯

3)无限 for 循环

“三妹,你想不想体验一下无限 for 循环的威力,也就是死循环。”

“二哥,那会有什么样的后果啊?”

“来,看看就知道了。”

public class InfinitiveForExample {
   public static void main(String[] args) {
       for(;;){
           System.out.println("停不下来。。。。");
      }
  }
}

输出:

停不下来。。。。
停不下来。。。。
停不下来。。。。
停不下来。。。。

一旦运行起来,就停不下来了,除非强制停止。

img

 

break

break 关键字通常用于中断循环或 switch 语句,它在指定条件下中断程序的当前流程。如果是内部循环,则仅中断内部循环。

可以将 break 关键字用于所有类型循环语句中,比如说 for 循环、while 循环,以及 do-while 循环。

用在 for 循环中的示例:

for (int i = 1; i <= 10; i++) {
   if (i == 5) {
       break;
  }
   System.out.println(i);
}

用在嵌套 for 循环中的示例:

for (int i = 1; i <= 3; i++) {
   for (int j = 1; j <= 3; j++) {
       if (i == 2 && j == 2) {
           break;
      }
       System.out.println(i + " " + j);
  }
}

用在 while 循环中的示例:

int i = 1;
while (i <= 10) {
   if (i == 5) {
       i++;
       break;
  }
   System.out.println(i);
   i++;
}

用在 do-while 循环中的示例:

int j = 1;
do {
   if (j == 5) {
       j++;
       break;
  }
   System.out.println(j);
   j++;
} while (j <= 10);

用在 switch 语句中的示例:

switch (age) {
       case 20 :
         System.out.println("上学");
         break;
       case 24 :
         System.out.println("苏州工作");
         break;
       case 30 :
         System.out.println("洛阳工作");
         break;
      default:
        System.out.println("未知");
        break; // 可省略
}

continue

当我们需要在 for 循环或者 (do)while 循环中立即跳转到下一个循环时,就可以使用 continue 关键字,通常用于跳过指定条件下的循环体,如果循环是嵌套的,仅跳过当前循环。

来个示例:

public class ContinueDemo {
   public static void main(String[] args) {
       for (int i = 1; i <= 10; i++) {
           if (i == 5) {
               // 使用 continue 关键字
               continue;// 5 将会被跳过
          }
           System.out.println(i);
      }
  }
}

输出:

1
2
3
4
6
7
8
9
10
 

标签:char,Java,int,基础,System,语法,println,public,out
From: https://www.cnblogs.com/chaosssock/p/17134132.html

相关文章

  • Java数组&字符串
    Java数组数组是一个对象,它包含了一组固定数量的元素,并且这些元素的类型是相同的。数组会按照索引的方式将元素放在指定的位置上,意味着我们可以通过索引来访问这些元素。在......
  • JavaWeb基本概念
    JavaWeb1、基本概念1.1、前言web开发:web,网页的意思,www.baidu.com静态webhtml,css提供给所有人看的数据始终不会发生变化动态web提供给所有人看的数......
  • javascript & Uncaught TypeError: arr is not iterable bug All In One
    javascript&UncaughtTypeError:arrisnotiterablebugAllInOnefunctioncompute(arr){const[left,symbol,right]=arr;switch(symbol){......
  • PAT-basic-1026 程序运行时间 java
    一、题目要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单......
  • 2月18日的java学习
    2月18日的java学习java的类型原则基本类型(除浮点型)逐渐变大之后先float后double,容器逐渐变大低到高为自动,高到低为强制转换过程中会发生内存泄漏,或者精度丢失......
  • 漏洞分析-存储型XSS-JAVA篇
    0x00原理分析存储型XSS:用户在浏览器传入的数据未做校验,导致一些恶意的前端代码被插入至数据库中,前端再次读取数据时,数据被当成前端代码,或与前端代码拼接并执行。0x01效......
  • 每天一点基础K8S--prometheus基础
    prometheus基础1、简介1、开源的系统监控和告警系统Prometheusisanopen-sourcesystemsmonitoringandalertingtoolkit官网:https://prometheus.io/docs/introdu......
  • java面向对象
    java面向对象以类的方式组织代码,以对象的组织(封装)程序。一个类里面只有方法和属性一个项目至多只有一个main方法创建对象类是抽象的,需要进行实例化publicclass......
  • 算法刷题-字符串排序-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 算法刷题-字符串反转-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......