草庐IT

Java基本语法

sikongyan 2023-04-18 原文

本文写作思路源于狂神说

写在前面

1.在IDEA里创建Java项目及IDEA的背景与字体更改

(1)创建Java项目(空项目)

1、进入IDEA页面-->File-->new-->project-->选择Empty Project

2、填写项目名与项目存放的路径

注意:路径后方也需要写上\项目名

3、建好空项目后如图

4、File-->new-->moudle(模块)

5、然后出现以下页面,next

6、出现以下页面,可以更改名字,点击finish

7、由于建立的是一个空的项目,所以还需要配置项目结构

方式一:File-->Project Structure-->选择project-->project SDK选择我们配置好的就可以使用了

方式二:点击IDEA页面的右下角有三个蓝色正方形的图标,其余操作与方式一一样

(2)更改字体

File-->settings...-->Font(如下图)

(3)更改背景

方式一:File-->settings...-->Appearance-->Background Image...-->选择图片-->OK

方式二:双击shift键-->输入Set Background Image-->选择图片-->OK

(4)运行输出Hello World!

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

一、注释

调整注释的颜色及大小

File-->Settings-->Editor-->Java(如下图)-->Apply-->OK

注意:注释不会被执行

1.单行注释

表示形式为// 注释内容,样式如下图

注意:只能注释一行文字

public class Demo1 {
    public static void main(String[] args) {
        String man = "司空颜";
        //单行注释
        //String MAN = "司空颜";
        //String Ahello = "司空颜";
        //String hello = "司空颜";
        //String $hello = "司空颜";
        //String _hello = "司空颜";
        //String A1 = "司空颜";
        System.out.println(man);
    }
}

2.多行注释

表示形式为/* 注释内容 */,样式如下图

可以注释一段文字

public class Demo1 {
    public static void main(String[] args) {
        String man = "司空颜";
        /*
        多行注释

         */
        System.out.println(man);

    }
}

3.文档注释(Java Doc)

表示形式为/** 注释内容 */,样式如下图

注意:文档注释是有其他功能的,可以加一些参数,在*号后面写上@...

public class Demo1 {
    public static void main(String[] args) {
        String man = "司空颜";
        /**
         *
         *文档注释
         * @Description HelloWorld
         * @autor sikongyan
         */
        System.out.println(man);

    }
}

想要了解注释更多的码友,可以去搜索"有趣的代码注释"

二、标识符和关键字

1.关键字

2.标识符注意点

  • 所有的标识符都应该以字母(AZ或者az),美元符($)、下划线(_)开始
  • 首字母之后可以是字母、美元符、下划线或者数字的任何字符组合
  • 不能使用关键字作为变量名或方法名
  • 标识符是大小写敏感
  • 合法标识符举例:age、$salary、_value...
  • 非法标识符举例:123abc、-salary、class、#abc...
  • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low

三、数据类型

1.八大基本类型(primitive type)

1.1数值-整数类型

byte占一个字节范围:-128~127

short占2个字节范围:-32768~32767

int占4个字节范围:-2147483648 ~2147483647

long占8个字节范围: -9223372036854775808 ~ 9223372036854775807

1.2数值-浮点类型

float占4个字节

double占8个字节

1.3 boolean类型:占1位其值只有true和false两个

举例:

public class Demo2 {
    public static void main(String[] args) {
        String a="Hello,World!";
        int num=10;
        System.out.println(a);
        System.out.println(num);
        //八大基本数据类型
        //整数
        int num1=10;//最常用
        byte num2=20;
        short num3=30;
        long num4=30L;//Long类型要在数字后面加个L
        //小数:浮点数
        float num5 = 50.1F;//float类型要在数字后面加个F
        double num6=3.1025536255523;
        //字符
        char name='颜';
        //字符串 String不是关键字,类
        //String namea="司空颜";

        //布尔值
        boolean flag = true;
        //boolean flag = false;
    }
}

2.引用类型(reference type)

1.1类

1.2接口

1.3数组

四、类型转换

情况较为复杂,就不多用文字赘述了,直接上代码,详情请观看此视频

例1:

public class Demo {
    public static void main(String[] args) {
        //整数拓展  进制  二进制0b  十进制0  十六进制0x
        int i=10;//十进制的10
        int i2=010;//八进制的10
        int i3=0x10;//十六进制的10

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("===============================");

        //=======================
        //浮点数拓展?  银行业务怎么表示?钱
        //BigDecimal  数学工具类
        //=======================
        //float 有限 离散  舍入误差  大约  接近但不等于
        //double
        //最好完全使用浮点数进行比较
        //最好完全使用浮点数进行比较
        //最好完全使用浮点数进行比较

        float f = 0.1f;
        double d = 0.1;
        System.out.println(f==d);//false
        //System.out.println(f);
        //System.out.println(d);

        float d1=2131313131313f;
        float d2=d1+1;
        System.out.println(d1==d2);//true
        //System.out.println(d1);
        //System.out.println(d2);
        System.out.println("==============================");

        //=======================
        //字符拓展?
        //=======================
        char c1='a';
        char c2='中';
        char c3='A';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
        System.out.println((int)c3);

        //强制转换可以把字符强制转换为数字
        //所有的字符本质还是数字
        //编码 Unicode  2个字节  最多65536字符  Excel表格最长是2的16次方 2的16次方=65536
        //a=97  A=65  中=20013
        //u0000  UFFFF
        char c4='\u0061';
        System.out.println(c3);//A
        //转译字符
        // \t 制表符
        // \n 换行
        // ......

        System.out.println("Hello\tWorld!");
        System.out.println("===========================");

        //
        String sa = new String("Hello World!");
        String sb = new String("Hello World!");
        System.out.println(sa==sb);
        String sc = "Hello World!";
        String sd = "Hello World!";
        System.out.println(sc==sd);
        //对象  从内存分析

        //布尔值扩展
        boolean flag=true;

        if(flag==true){} //新手
        if(flag){} //老手
        //less is more! 代码要精简易读


    }
}

例2:

public class Demo01 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//内存溢出
        double c = i;

        //强制转换  (类型)变量名  高-->低
        //自动转换  低-->高

        System.out.println(i);
        System.out.println(b);
        System.out.println(c);

        /*注意点:
        1.不能对布尔值进行转换,原因是布尔是按位的
        2.不能把对象类型转换为不相干的类型
        3.在把高容量转换到低容量的时候,需要强制转换,反之则不用动
        4.转换的时候可能存在内存溢出,或者精度问题!
         */
        System.out.println("===============");
        System.out.println((int)23.7);//23
        System.out.println((int)45.89f);//45

        System.out.println("===============");
        char d = 'a';
        int e = d+1;
        System.out.println(e);
        System.out.println((char)e);


    }
}

例3:

public class Demo02 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK新特性,数字之间可以用下划线分割,且输出不会输出下划线
        int money=10_0000_0000;
        int years=20;
        //System.out.println(money);
        int total=money*years;//-1474836480,计算的时候溢出了
        System.out.println(total);
        long total2=money*years;//-1474836480,计算时默认是int,计算完以后再转换类型
        System.out.println(total2);
        long total3 = money*(long)years;//先把一个数据转换成Long,再进行计算
        System.out.println(total3);
        long total4 = (long)money*years;
        System.out.println(total4);
    }
}

例4:

public class Demo03 {
    public static void main(String[] args) {
        //int a,b,c;
        //int a=1,b=2,c=3;最好写成三行
        //int a=1;程序得保证程序的可读性
        String name="sikongyan";
        char x='X';
        double pi=3.14;
    }
}

五、变量、常量、作用域

例1:

public class Demo04 {

    //类变量 static
    static double salaly=2500;

    //属性:变量

    //实例变量:从属于对象;
    String name;
    int age;
    //所有的数值类型初始化值是0或者0.0 字符类型的话初始值是u0000(16位的0)
    //除了基本类型,其余的初始化值(默认值)是null
    //布尔值默认是false

    //main方法
    public static void main(String[] args) {

        //局部变量,必须声明和初始化值
        int i =10;
        System.out.println(i);

        //变量类型 变量名字=new com.sikongyan.www.Operator.basic.Demo04();
        Demo04 Demo04 = new Demo04();
        System.out.println(Demo04.age);
        System.out.println(Demo04.name);
        //类变量 static
        System.out.println(salaly);
    }
    //其他方法
    public void add(){

    }
}

例2:

public class Demo05 {
    //定义为static
    static final double PI=3.14;
    //final为修饰符,不存在先后顺序
    final static double pi=3.1652;
    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(pi);
    }
}

六、运算符

Java支持如下运算符:

  • 算术运算符:+、-、*、/、++、--
  • 赋值运算符:=
  • 关系运算符:>、<、>=、<=、==、!=、instanceof
  • 逻辑运算符:&&、||、!
  • 位运算符:&、|、^、~、>>、<<、>>>
  • 条件运算符:?
  • 扩展赋值运算符:+=、-=、*=、/=

1.基本运算符

例1:

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //ctrl+D:复制当前行到下一行
        int a=10;
        int b=20;
        int c=25;
        int d=25;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
        System.out.println(a/b);//0,因为类型为int,会四舍五入,所以需要数据类型强制转换一下才正确

    }
}

例2:

public class Demo02 {
    public static void main(String[] args) {
        //多类型
        long a=123123123222L;
        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类型
        //System.out.println((String)(c+d));//Int
        System.out.println((double)c+d);//double
        //多类型时如果数值类型有Long,计算以后为Long类型
        //如果有double,计算以后结果为double
        //其余计算以后,默认为Int类型


    }
}

例3:

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确 错误 用布尔值表示
        //会和if一起搭配使用
        int a=10;
        int b=20;
        int c=21;
        //取余数,也叫模运算
        System.out.println(c%b);//c÷b=2 ... 1,print 1
        System.out.println(c%a);

        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);

    }
}

2.自增自减运算符和初识Math类

例:

public class Demo04 {
    public static void main(String[] args) {
        //++ -- 自增,自减
        int a=3;
        int b=a++;//执行完这行代码后,先给b赋值,再自增
        //隐藏代码 a++ a=a+1
        System.out.println(a);
        //隐藏代码 a++ a=a+1
        int c=++a; //执行完这行代码前,先自增,再给b赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        int d=a--;
        int e=--a;
        System.out.println(d);
        System.out.println(e);

        //幂运算 2^3=2*2*2=8  很多运算,我们会使用一些工具类来操作
        double pow=Math.pow(3,2);
        System.out.println(pow);
    }
}

3.逻辑运算符、位运算符

例:逻辑运算符

package com.sikongyan.www.Operator;

//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        //与 (and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a&&b));//与运算:两个都为真,结果为真
        System.out.println("a || b:"+(a||b));//或运算:一个为真,结果为真
        System.out.println("!(a && b):"+!(a&&b));//与非运算
        System.out.println("!(a || b):"+!(a||b));//与或运算

        //短路运算
        System.out.println("a && b:"+(b&&a));//短路例子,已知b为假,则a就不执行了
        //例
        int c=5;
        boolean d = (c<4)&&(c++<10);
        System.out.println(d);
        System.out.println(c);
    }
}

例:位运算符

public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1111
        -----------------------------
        A&B(与) = 0000 1100
        A|B(或)= 0011 1111
        A^B(亦或) = 0011 0011 相同为0,不同为1
        ~B (取反)= 1111 0000

        面试题:2*8怎样计算最快
        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);
    }
}

例3:

public class Demo07 {
    public static void main(String[] args) {
        int a=10;
        int b=20;
        a+=b;//a = a+b
        a-=b;//a = a-b
        System.out.println(a);

        //字符串连接符    + , String
        System.out.println(a+b);
        System.out.println(""+a+b);//如果字符串在前面,后面的会进行拼接
        System.out.println(a+b+"");//如果字符串在后面,会先进行运算,再拼接
    }
}

4.三元运算符

例:

package com.sikongyan.www.Operator;

//三元运算符

public class Demo08 {
    public static void main(String[] args) {
        //? :
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z
        int score = 80;
        //String type = score<60?"不及格":"及格";//必须掌握
        //System.out.println(type);
        if(score<60){
            System.out.println("不及格");
        }else{
            System.out.println("及格");
        }
    }
}

十、包机制

1.创建包及包命名

1.1 创建包:Src-->new-->Package

1.2 包命名:一般使用公司域名倒置作为包名

例:com.baidu.www

注意点如下

package com.sikongyan.www.Operator;

//*为通配符,可以导入包下所有的代码

public class Demo09 {
    public static void main(String[] args) {
        System.out.println("sikongyan");

//阿里巴巴开发手册

        //https://docs.oracle.com/javase/8/docs/api/
        //jdk帮助文档
    }
}

十一、javaDoc生成文档

JavaDoc参数信息

  • @author:作者名
  • @version:版本号
  • @since:指明需要最早使用的jdk版本
  • param:参数名
  • return:返回值情况
  • throws:异常抛出情况

1.命令行生成javadoc

  1. 编辑doc.java文件,使用文档注释,如下图
package com.sikongyan.www.Basic;

    /**
     * @author sikongyan
     * @version 1.0
     * @since 1.8
     */
    public class Doc {

        String name;

        /**
         * @author sikongyan
         * @param name
         * @return
         * @throws Exception
         */
        public String test(String name) throws Exception{
            return name;
        }
        //命令行生成doc api文件
        //javadoc -encoding UTF-8 -charset UTF-8 Doc.java
    }
  1. doc命令生成doc api文件

javadoc -encoding UTF-8 -charset UTF-8 doc.java

  1. 进入doc.java文件目录下查看如图
  2. 打开index.html文件如图,则说明已生成文档

2. IDEA生成javadoc

参考此篇博客

有关Java基本语法的更多相关文章

  1. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  2. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  3. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  4. ruby - 覆盖相似的方法,更短的语法 - 2

    在Ruby类中,我重写了三个方法,并且在每个方法中,我基本上做同样的事情:classExampleClassdefconfirmation_required?is_allowed&&superenddefpostpone_email_change?is_allowed&&superenddefreconfirmation_required?is_allowed&&superendend有更简洁的语法吗?如何缩短代码? 最佳答案 如何使用别名?classExampleClassdefconfirmation_required?is_a

  5. ruby 语法糖 : dealing with nils - 2

    可能已经问过了,但我找不到它。这里有2个常见的情况(对我来说,在编程Rails时......)用ruby​​编写是令人沮丧的:"astring".match(/abc(.+)abc/)[1]在这种情况下,我得到一个错误,因为字符串不匹配,因此在nil上调用[]运算符。我想找到的是比以下内容更好的替代方法:temp="astring".match(/abc(.+)abc/);temp.nil??nil:temp[1]简而言之,如果不匹配,则简单地返回nil而不会出错第二种情况是这样的:var=something.very.long.and.tedious.to.writevar=some

  6. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  7. ruby - Ruby 语法糖有 "rules"吗? - 2

    我正在学习Ruby的基础知识(刚刚开始),我遇到了Hash.[]method.它被引入a=["foo",1,"bar",2]=>["foo",1,"bar",2]Hash[*a]=>{"foo"=>1,"bar"=>2}稍加思索,我发现Hash[*a]等同于Hash.[](*a)或Hash.[]*一个。我的问题是为什么会这样。是什么让您将*a放在方括号内,是否有某种规则可以在何时何地使用“it”?编辑:我的措辞似乎造成了一些困惑。我不是在问数组扩展。我明白了。我的问题基本上是:如果[]是方法名称,为什么可以将参数放在括号内?这看起来几乎——但不完全是——就像说如果你有一个方法Foo.d

  8. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  9. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  10. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

随机推荐