设为首页 加入收藏

TOP

20190312_浅谈go&java差异(二)(二)
2019-05-23 14:33:06 】 浏览:148
Tags:20190312_ 浅谈 go&java 差异
默认的构造
方法,若无则在编译为class文件的时候自动为所在类加入一个。

  public class ConstructTest {
      private static final Logger LOG = LoggerFactory.getLogger(ConstructTest.class);
      @Test
      public void processConst(){
          LOG.info(">>> start");
          Person person = new Person();
          LOG.info(">>> end");
      }
  }

  class Person{
      private static final Logger logger = LoggerFactory.getLogger(Person.class);
      private String name;
      private Integer age;

      public Person() {
          logger.info("default Constructor");
      }

      public String getName() {
          return name;
      }

      public void setName(String name) {
          this.name = name;
      }

      public Integer getAge() {
          return age;
      }

      public void setAge(Integer age) {
          this.age = age;
      }
  }
const 与 static final
  • go
    go的静态(也可叫静态常量,主要用于基本数据类型),使用关键字const指定。
    使用const定义的静态变量是不可用修改或赋值的。

      const name int = 11
    
      const (
          a = "hello"
          b = true
          c = 99
      )
    
      func main() {
          fmt.Println(name)
          fmt.Println(a)
          fmt.Println(b)
          fmt.Println(c)
      }
    
  • java
    java的常量需要用两个关键字修饰 staticfinal ,前者表示静态的意思,但这个静态是可以被修改的,
    修改的前提是类型不变,而第二个关键字表示最终的意思,一旦变量被这个关键字修饰则不可重新修改变量。
    但是对于复合对象,比如List、Map、自定义对象等,又是可以被修改的,对于这点个人觉得 java 的常量的定义
    并不够严谨。

    public class staticFinalTest {
        private static final Logger LOG = LoggerFactory.getLogger(staticFinalTest.class);
        private static final String name = "Tom";
    
        private static String item = "first item";
    
        private static final List<String> initArr = new ArrayList<String>(){{
            add("A");
            add("B");
            add("C");
        }};
    
        @Test
        public void process(){
            LOG.info(name);
    
            item = "youth!";
    
            LOG.info(item);
    
            initArr.add("hello");
    
            LOG.info(initArr.toString());
        }
    }
    
参数或方法访问属性
  • go
    go 的方法或参数需要被外部访问,需要使用大写开头参数名或函数名(go文件大小写是与与否与是否私有无关)

      // 可被文件外函数访问
      var Name string = "John"
    
      func main() {
          fmt.Println(Name)
          Process()
      }
    
      // 可被文件外函数调用
      func Process() {
          fmt.Println("Process()")
      }
    
  • java
    java的参数或方法属性不同于go,大致分为三类:

    • private 仅当前类内访问
    • public 可公共访问
    • protect 仅可同包内访问
      public class ObjectTypeTest {
          private static final Logger LOG = LoggerFactory.getLogger(ObjectTypeTest.class);
    
          //私有访问(仅可同一类中)
          private String name1 = "name01";
          // 保护访问(仅可同一包内)
          protected String name2 = "name01";
          // 公共访问 (任何类均可访问)
          public String name3 = "name01";
    
          @Test
          public void process(){
              LOG.info(this.doSomeThing());
              LOG.info(name1);
              LOG.info(name2);
              LOG.info(name3);
    
          }
    
          public String doSomeThing(){
              return "hello";
          }
    
      }
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇深度解密Go语言之反射 下一篇golang 1.12 自动补全

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目