Java基础语法

Java标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
规范
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线()开始
首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(
)或数字的任何字符组合
关键字不能用作标识符
标识符是大小写敏感的
类名最好要大写,用来区分他是一个类
java命名规范
(1)类名接口名:所有首字母大写XxxYyyZzz
(2)变量名,函数名:xxYyZz
(3)包名:xxyyzz
(4)常量名 XXX_YYY_ZZZ
****Java关键字

这些保留字不能用于常量、变量、和任何标识符的名称。(不用记,以后会接触)
Java注释:一定要写
(被注释内容不会被编译,仅仅起到提示的作用,便于后期review代码)
1.// 单行注释
2./*
多行注释
/
3./
*多行注释,可以生成文档,又叫文档注释 命令行输入javadoc xxx.java
*/
常量
常量表示不能被改变的数值
变量
变量指的是内存中的一块存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化, 变量的作用范围只在该“{}”中有效
int a; { a=6; } // a等于6 { int a =6;} //定义在{}内的变量,{}外不可以访问
所以说如果你想要在{}之后访问大括号里进行变化的变量,此变量必须在{}外声明
定义变量的格式
1.数据类型 变量名 = 初始化值(声明并初始化)
2.先声明,再初始化
注意:(1)变量的定义格式是固定的,变量就如同数学中的未知数
(2)变量必须有 初始值
(3)变量只能 被声明一次
二进制(了解)
java二进制采用 补码 形式表示 正负数区分的标志:符号位(0正,1负)
正数补码是其本身,负数补码取反+1
所以 计算机二进制 与十进制转换,要先把二进制转换为原码作为过渡再进行转换。
1.十进制转换为二进制: 除2取余,除尽为止,余数从上向下看为二进制源码结果,由于是正数所以原码和补码相同

  1. 二进制转换为十进制 :累加求和
  2. 负十进制转换为负数二进制 :取绝对值,转换为二进制,取反加1

    4.负二进制:取反加1,转换为十进制,乘-1
    拓展: 为什么byte表示的是8个字节,范围却是-128到127呢?
    -128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
    01111111表示的是127 ,按道理128表示的是10000000,可是因为第一位是一个符号位,所以byte正数最大值就为127,当第一位等于1的时候就是负数,把10000000看作是一个负数的补码,转换为十进制就是把10000000取反加1为10000000十进制就是128,再乘-1为-128
    127后面是-128,最大的正数之后是最小的负数。这就跟钟表一样,12点钟后面是1点中钟一样。
    byte b=(byte)128, 把128赋值给b,计算机语言 是通过二进制补码表示的,但因为正数原码补码相同,所以b的值变成了10000000,这时你要输出b,计算机发现第一位的符号位是1,则把它看成是负数的补码,输出时再转换为十进制则变成负128( 赋值时,计算机接收的是二进制的补码,输出的时候把补码转换为原码在转换为十进制然后再输出
    基本数据类型 :四型八种(可以想象是一种容器,承装事物)
    整型 (整数):byte(1个字节8位 -128-127)、short(2个字节)、int(4个字节)、long(8个字节)
    浮点型(小数):float(4个字节,2的-149次方—2的127次方)、double(8个字节,非常大)
    布尔型(表示真假):boolean(1字节)
    字符型:char(2字节)用单引号括起来,只能是两个字母,一个汉字等于两个字符(0-65535)
    ascii掌握 a-z(97-122),A-Z(65-90),1-9(48-57),每个ascii都对应一个字符
    Java中默认的整数类型是int,如果要定义为long ,则要在数值后加上L或者l
    默认的浮点型是双精度浮点,如果要定义float,则要在数值后面加上f或者F
    一个字节等于8位,1个字节等于256个数。2^8
    一个英文字母或者阿拉伯数字占一个字节
    一个汉字占2个字节
    可为数字加下划线,让人更易阅读,编译器自动去除
    转义字符 :具有特殊含义的字符
    System.out.prinltn(‘\’’);
    \’算是一个整体标识一个单引号
    \v竖向跳格 \b退格
    \r回车(表示的是回到本行行首)
    System.out.println('h');
    System.out.println('\r');
    System.out.println('a'); //最后输出的是 a因为\r回到了行首,a覆盖了h
    \反斜线符"" \n新行
    \t跳向下一个tab位置(横向跳到下一制表位置) 缩进的时候都要写
    数据类型转换
    1.自动类型转换
    小类型可自动转换为大类型
    byte a=12; int b=a byte自动转换为int
    2.强制类型转换
    (比如把装满水的大杯子往小杯子里倒水,多余的会溢出,而小向大倒没有问题。)
    大类型转换为小类型,可能损失精度
    int a=3;
    byte b=(byte)a;
    字符串类型 (引用类型)
    String str = ""; // 这个跟"abc"、"中国",本质上这都一样,只是空串,长度为0罢了
    ""是空字符串,但是也是字符串,没有什么东西。 //字符串初始化用“”,不用null
    而null是空的意思,什么都没有,没有地址。
    字符串与基本数据类型的转换
    String s=“”+123; //基本数据类型转换为字符串,空串加基本数据类型
    Integer.parseInt(数字字符串); //字符串转换为数字
    Double.parseDouble(数字字符串);
    s.charAt(index)//字符串转换为字符
    运算符( 相等是== ,赋值是= 千万不要写错!
    算术运算符 :+ - * / % ++ --
    (1) int a=5; int b=2; int c=a/b; int表示整数,小数部分被舍弃,答案为2
    (2) int a=3;int b=4;double c=a/b; a/b运算之后是int型,舍弃小数部分为0,自动转换为double增加精度变成0.0
    (3) int i=3; int a=i/2 + i/4 =1+0 每一次i的运算返回值都是int型
    (4) double a=3;int b=4;double c=a/b 两数想运算, 返回的结果是两数据类型中较大的(精度)
    整型运算自动转换为int进行运算,浮点型运算自动转换为double进行运算,因此要得到特定其它类型,需要进行强制转换
    ****注:不知道有没有有这样的疑问:****
    为什么byte a=1+2; 是合法的而 byte a=1; byte b=2;byte c=a1+a2;就是非法的,这是因为a1+a2在运算的时候自动转成了int型然后再运算,返回值变成了int型,或许还会想为什么两者代表的都是1+2为什么第二个非法呢,因为在运算的时候第二个1和2从byte型的盒子里跑到了int型的盒子内,而第一个里的1和2不在任何盒子里,所以第二个如果要把它变成byte型,就要打破盒子也就是强转
    i++先运算,先赋值,先输出,再自加,自加 表示对本身的操作 等同于i=i+1(int i=5;int a=i++; 此时a=5,i=6 ) ** byte a=127 byte=++a; 是对a本身操作,a的类型并没有转换,而**
    byte c=a+1 右边变成一个运算,所以会自动转换为int型
    int i=5;int a=i++ + i++; 此时a=11,i=7第一个i++是5++,第二个i++因为第一个i++结束变成6++ ,所以a=5+6=11; i=i+1+1=7
    int b=i++ + i-- + i++ 5++ + 6-- + 5++ =16
    ++i 先自加,再赋值(int i=5;int a=++i; 此时a=6,i=6 )
    面试题
    int i=3; i=i++; i=i++; 输出的i都为3,不变
    原因:其实a++的运算,是在a进行运算之前,先开辟一块内存用来存储变量a的复制,b真正指向的其实是a运算之前的复制,所以b的值为3
    而i=i++,由于两边变量相同,i的复制最后覆盖了i++后的值

    i++在内存中是比较奇特的,而a=b+c 在内存中,b和c并不会复制,而是直接将b和c相加,得到的值赋给a
    逻辑和关系运算符
    !=表不等 == 表相等
    &&短路与,||短路或 如果第一个表达式能确定结果,第二个表达式就不进行计算
    &,| 两个表达式都进行计算
    建议用短路与与短路或 ,避免一些错误产生,例:x!=0&&1/x 当x=0时确定结果,不会执行第二个表达式避免了错误的产生
    expression1 ^ expression2 异或,两侧真假相同,为假
    三元运算符
    condition?expression1:expression2 当condition为真时计算第一个表达式,为假计算第二个表达式
    面试题: System.out.println(3>2?2:3.0);
    注:1.表达式1和表达式2决定返回值类型
    2.如果表达式类型不一致,必须进行类型转换,转换为表达式类型中较大的一个类型,从而决定返回值
    ** ** 3.表达式1和表达式2中都可以再套一个三元运算符构成了复杂的三元运算符
    位运算符(针对二进制),1表示true,0表示false (了解)
    无符号右移:符号位不跟着移动,有符号右移>>>:符号跟着一起移动(不存在有符号左移)
    5<<2左移两位 0000 0101 左移两位后0001 0100
    5>>2
    若是int型表32位,则 1<<35 与1<<3相同,因为需要进行模32的运算
    1&1为1,否则为0 0|0为0,否则为1
    4取反为-5 4二进制为0100取反为1011,第一位为1表负数,-1去反转换为十进制为-5
    面试题:把8变成2最快效率,把8右移二位(因为8/2计算机也会先转换为2进制,再运算)
    输入输出
    控制台输入:构建Scanner对象,并与“标准输入流”System.in关联。
    Scanner in=new Scanner(System.in);
    String name=in.nextLine(); //nextLine()表示获取一行
    String firstName=in.next(); //读取一个单词,以空格为分隔符
    int age=int.nextInt; //读取一个整数,举一反三可以读取其它基本类型
    格式化输出(了解)
    System.out.printf(“hello,%s,you‘ll be %d”,name,age)
    每一个以%字符开始的格式说明符都用相应的参数替换,f表浮点,s表字符串,d表十进制
    %8.2f 表示 打印8个字符,小数点后有两位
    print 表示不换行的打印

欢迎加入学习交流群569772982,大家一起学习交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Java标识符 Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 规范: 所有的标识符都应...
    孙浩j阅读 584评论 0 0
  • 一、关键字 用于定义数据类型的关键字 基本数据类型 整数型(默认为 int) byte(8...
    陈凯冰阅读 242评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,572评论 18 399
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,586评论 4 12
  • 空调开了一会儿我才觉得还有点热,一看温度还停留在你设的26度,你有点怕冷;解开收纳袋要拿电源线,发现它们...
    铜豌豆Aslan阅读 245评论 0 1