额?what?
在B站无意中看到一张图,无意间已发了自己的好奇,实际上我早就知道Java支持Unicode编码也就是可以使用中文命名规则,但是我们可以包装一下,玩一玩完全使用中文编码也未尝不可,但是经过尝试,比较困难,Java不支持运算符重载,也没有办法定义
1#define 2
所以很大程度上限制了我们使用Java开发一款中文编程语言的意图;*(尽管这样做并没有什么意义)

package Chinese.utils;包里内容

1public enum 布尔 { 2 假,真; 3} 4 5public final class 工具 { 6 7 public static boolean 不为空(Integer length) { 8 if(length==0) { 9 return false; 10 }else { 11 return true; 12 } 13 } 14} 15 16 17public class 基础类型工具 { 18 19 public static final boolean 假=false; 20 public static final boolean 真=true; 21 22 public static 字符串 声明字符串(String 内容) { 23 return new 字符串(内容); 24 } 25 26 public static 数字 声明数字(String 内容) { 27 return new 数字(内容); 28 } 29 30 public static void main(String[] args) { 31 字符串 字符串 = 基础类型工具.声明字符串("搜索"); 32 控制台.标准换行输出(字符串); 33 } 34} 35 36public class 控制台 { 37 38 public final static void 标准输出(字符串 内容) { 39 System.out.print(内容); 40 } 41 public final static void 标准输出(String 内容) { 42 System.out.print(内容); 43 } 44 45 public final static void 标准换行输出(字符串 内容) { 46 System.out.println(内容); 47 } 48 public final static void 标准换行输出(Object 内容) { 49 System.out.println(内容); 50 } 51 52 public final static void 标准换行输出(String 内容) { 53 System.out.println(内容); 54 } 55 56 public final static void 标准换行输出(数字 内容) { 57 System.out.println(内容); 58 } 59 60} 61
包装的数字类
1public class 列表<T> extends ArrayList<T>{ 2 3 /** 4 * 5 */ 6 private static final long serialVersionUID = 1L; 7 /** 8 * 9 */ 10 11 private ArrayList<T> contents; 12 13 public 列表() { 14 super(); 15 this.contents = new ArrayList<>(); 16 } 17 18 public void 增加(T t) { 19 contents.add(t); 20 } 21 22 public Integer 获取长度() { 23 return contents.size(); 24 } 25 26 @Override 27 public Iterator<T> iterator() { 28 return contents.iterator(); 29 } 30 31 @Override 32 public int size() { 33 return contents.size(); 34 } 35 36 @Override 37 public T get(int index) { 38 return contents.get(index); 39 } 40 41 @Override 42 public String toString() { 43 return "列表 [contents=" + contents + "]"; 44 } 45 46} 47 48public class 数字 { 49 private BigDecimal bDecimal; 50 51 public 数字(String val) { 52 super(); 53 this.bDecimal = new BigDecimal(val); 54 } 55 56 public BigDecimal getbDecimal() { 57 return bDecimal; 58 } 59 60 public void setbDecimal(BigDecimal bDecimal) { 61 this.bDecimal = bDecimal; 62 } 63 64 @Override 65 public String toString() { 66 return bDecimal.toString(); 67 } 68} 69 70public final class 系统 { 71 72 public static void 退出() { 73 System.exit(0); 74 } 75 76} 77 78public final class 字符串 { 79 private static String val; 80 81 public static void 声明字符串(String val) { 82 字符串.val = val; 83 } 84 85 public 字符串(String val) { 86 super(); 87 字符串.val = val; 88 } 89 90 public String getVal() { 91 return val; 92 } 93 94 public void setVal(String val) { 95 字符串.val = val; 96 } 97 98 @Override 99 public String toString() { 100 return val; 101 } 102} 103 104
测试一下:
-
实体代码 这里要说明一下;本来这样是完全可以使用自己定义的所有类型的,但是由于在实际编码中在Main函数中并不是那么美观,所以这里还是使用java本身提供的基础类型。当然你可以选择自己去实现一下
public class 学生 {
1//private 字符串 姓名; 2 3private String 姓名; 4 5private Integer 年龄; 6 7public String 获取姓名() { 8 return 姓名; 9} 10 11public void 设置姓名(String 姓名) { 12 this.姓名 = 姓名; 13} 14 15public Integer 获取年龄() { 16 return 年龄; 17} 18 19public void 设置年龄(Integer 年龄) { 20 this.年龄 = 年龄; 21} 22 23@Override 24public String toString() { 25 return "学生 [姓名=" + 姓名 + ", 年龄=" + 年龄 + "]"; 26}}
-
测试代码:
public class test {
1public static void main(String[] args) { 2 3 列表<学生> 学生列表 = new 列表<学生>(); 4 5 学生 学生1 = new 学生(); 6 学生1.设置姓名("tomcat"); 7 学生1.设置年龄(20); 8 9 学生 学生2 = new 学生(); 10 学生2.设置姓名("apache"); 11 学生2.设置年龄(33); 12 13 学生列表.增加(学生1); 14 学生列表.增加(学生2); 15 16 if(!(工具.不为空(学生列表.获取长度())==基础类型工具.真)) { 17 控制台.标准换行输出(基础类型工具.声明字符串("列表中没有数据")); 18 系统.退出(); 19 } 20 for(学生 学生详情:学生列表){ 21 控制台.标准换行输出(学生详情.获取姓名()); 22 控制台.标准换行输出(学生详情.获取年龄()); 23 } 24}}
-
效果: 与那张图片对比还是差不多
