scratch进阶java教程贴
scratch吧
全部回复
仅看楼主
level 11
万里星定 楼主
本贴将为想学习高级语言的吧友提供java的教程。过程中我会尽量用scratch的术语和通俗易懂的话来解释一些专有名词。如果已经学过其他语言的吧友也可以来看看,多学一门语言也不亏[滑稽]欢迎指正和补充
2020年01月30日 13点01分 1
level 11
万里星定 楼主
三楼备用,不要在这楼的楼中楼回帖(二楼的“勿回”有歧义已自删)
2020年01月30日 13点01分 3
我会在教程楼的下面写一些当时没想到的补充。如果发现有楼被吞了(2楼除外),请在回复里说一下,谢谢
2020年01月31日 05点01分
level 11
万里星定 楼主
简介
java是一门高级语言,语法比c++简单许多,且性能在常规编程时并不会比c++慢上多少。
java是基于java虚拟机JVM来运行的,这提供给了java极高的可移植性,以及动态执行的能力(在之后的“反射”中会详细讲)。JVM可以在java官网中下载(自行搜索)
2020年01月30日 13点01分 4
补充:java的下载分为jre和jdk两种,jre是运行环境,jdk是开发环境。jdk自带jre。建议下载java8,这是目前最常用的java版本。比java8更加新的版本加入了模块化,尽管方便包的管理,但会导致一些匿名包的存在...总而言之,比较难弄,不太推荐下载
2020年01月31日 04点01分
再补充一点:若要下载java,请自行百度“jdk8下载”,然后点击那个oracle的网站,往下划到java8就行了。不建议下载新java的原因还有一些:版本号模式变更、限制了反射、更新不大。如果真要试水,那就下载java11吧,目前java会长期支持那个版本(但还是不建议下载)
2020年01月31日 07点01分
有没有尝试过把jdk放到U盘里,bat+vbs编写环境变量指向U盘jdk[酷]
2022年06月24日 14点06分
@贴吧用户_aWEQ2t5 然后以后新电脑即插即用
2022年06月24日 14点06分
level 11
万里星定 楼主
开发工具
java的开发十分需要IDE(开发工具)的支持,这可以简化java的编译工作。
最知名的javaIDE有两款,分别是eclipse和IDEA。我用的是eclipse,但听说IDEA更好用,因此可以自行选择下载
2020年01月30日 13点01分 5
补充:IDE的纠错和代码生成功能也很强大;听说IDEA比eclipse强大的地方在于代码补全;IDEA的全称叫IntelliJ IDEA
2020年01月31日 04点01分
再补充一点:若要下载eclipse,建议下载e(fx)clipse这个集成版本,该版本内置了javafx和maven。javafx是最新的java界面工具包,maven可以很方便地管理扩展包的下载。
2020年01月31日 04点01分
补充第三点:开发时建议使用护眼色背景,具体可以自行百度“eclipse护眼色背景”或“idea护眼色背景”。默认的白色背景看久了眼睛会疲劳,用护眼色对于长时间开发的益处相当明显
2020年01月31日 09点01分
继续补充:今天试了一下,IDEA功能太强大了,不过坑也太多了。。。如果只是想开发着玩一玩,可以用ecliose;如果有耐心不怕踩坑,可以试试IDEA。新手还是建议用eclipse,因为IDEA坑多的会让你想删了它
2020年02月11日 14点02分
level 11
万里星定 楼主
语法
我们先从最基本的“hello world”讲起。
代码:
public class Main(){
public static void main(String[] args){
System.out.println("Hello World");
}
}
java的代码不像c++和python那样可以直接写一行来运行,所有的代码必须包括在类里面。(可以理解为scratch的代码必须包括在角色和舞台里面)
main是程序的入口,但不像scratch可以有多个当绿旗被点击,一个程序只能有一个main。main()被称作”方法”,类似于scratch的功能块。其中的String[] args是它的参数,类型是String数组,类似于scratch的列表,但又有所不同。这在之后会详细讲。
public和static是方法的修饰符,public的意思是“任何类都可以访问”,static的意思是“不需要实例化对象就可以访问”,这些在之后会详细讲。
void是方法的返回类型,代表“无返回值”。
System.out.println()是java的输出文字方法,参数是一个或多个字符串或基本类型,下一节就会讲。
{}是类和方法的主体,代码必须在方法的主体中运行。
2020年01月30日 13点01分 6
补充:没有大括号的语句最后都必须加英文的半角分号(;)。System是java.lang包中的类,程序默认引用java.lang包。
2020年01月31日 04点01分
再补充一点:public class的名字必须与文件名相同,否则编译器会报错。而class则没有这个限制,但一般不单独写class。main()方法必须写在public class里。
2020年01月31日 04点01分
level 10
前排
支持[太开心]
2020年01月31日 04点01分 7
level 11
万里星定 楼主
类型
java的类型分为基本类型和引用类型。
基本类型有short, int, long, float, double, boolean, char, byte这八种,新手只需要掌握int, double, boolean这三种最常用的就好了,其他类型在一般情况下很少用到。
short:短整数。
int:整数。
long:长整数。
float:短小数。
double:小数。
boolean:布尔值,分为true和false,就是scratch里面的六边形判定。
char:单个字符,赋值时使用单引号(’)。
byte:位。
引用类型在java中是用类(class)定义的。最常用的引用类型是String(字符串)可以直接用双引号(")赋值。
所有的引用类型都继承于java.lang.Object类。
2020年01月31日 04点01分 8
level 11
万里星定 楼主
类库
java提供强大的类库,最常用的类库有java.lang、java.util、java.math,新手可以通过import java.util.*;这样在类库后面加一个星号来进行引用,这样做的缺点是无法直观的看到引用了哪些类。另一种办法是引用一个类之后用IDE进行生成对应的类库引用。
2020年01月31日 04点01分 9
补充:星号的作用是引用包下所有的类。此外,import static java.lang.System.out;这种形式可以直接在代码中使用out这个静态对象,静态方法也可以这么引用
2020年01月31日 08点01分
再补充一下:你可以在src文件夹(项目的源文件夹,IDE建立新项目时会创建)下建立包,方便划分类。假设你的最外层包是com,第二层包是test,你需要在代码开头添加“package com.test.Main;”。当然,这步IDE会帮你做了
2020年01月31日 09点01分
level 11
万里星定 楼主
关键词
java中的关键词用于修饰变量和方法。
访问权限(新手仅需学习public和private就可以了):
public:公开的,任何类都可以访问
private:私有的,仅本类可访问
protected:受保护的,本包里的类和所有子类可访问
default(默认):仅本包里的类可访问
还有两种关键词:
static:静态的,可以直接通过类名访问。static只能在类里定义,不能在方法里定义
final:终态的,不可改变指向。
此外,基本类型,class,void也算关键词。
关键词不可以作为类、变量、方法的名称。当你不小心用关键词作为名称时,IDE会提示你修改的。
关于关键词的使用会在下节讲。
2020年01月31日 05点01分 10
补充:这里的“关键词”请自行理解为“修饰符”,写的时候没想到这个词。。。但void不算修饰符,是关键词
2020年01月31日 08点01分
再补充一下:static感觉没解释清楚。当你用static修饰一个变量时,这个变量将在其所属类被提到时初始化,可以直接通过其所属类的类名来引用它而不需要实例化(含义见下面的教程)。“提到”包含:实例化这个类、调用这个类的静态方法或对象等。开头的import并不算“提到”。
2020年01月31日 08点01分
level 7
楼主用什么写java呀
2020年01月31日 05点01分 11
你是想问开发工具还是什么?我用的是eclipse,但听说IDEA的代码补全功能更强大
2020年01月31日 05点01分
就是编译器[滑稽]
2020年01月31日 05点01分
如果可以把下载软件公布一下
2020年01月31日 05点01分
@符茗 编译器?就是jdk啊,你去看一下我在上面的楼中楼的回复,那边有补充
2020年01月31日 05点01分
level 11
万里星定 楼主
类、变量、方法
java中的类这么定义(括号里的内容可选):
(public) class 名称{}
当你定义一个变量时,可以这么做(定义基本类型时可以直接写数字):
(访问权限) (static) (final) 类型 名字 = new 类名();
而方法的定义也差不多(返回类型可以用void替换,最后的括号里面可以填参数):
(访问权限) (static) (final) 返回类型 名字(){}
方法结束时,如果返回类型不是void(无返回值),则必须写一句return xxx;(xxx是返回类型或其子类的一个对象)。return也是一个关键词。
修饰符的顺序可以随意调换,但类型必须在所有修饰符之后。修饰符建议按照我的顺序这么写。
定义变量时,我们写上去的“new 类名()”被称之为实例化,生成一个对象。return返回的就是这样一个对象。
java是面向对象语言,而scratch是面向过程语言。面向对象语言比起面向过程语言的优势在于,面向对象语言的修改能力更强。以五子棋为例子,两种模式的语言都可以做出一个五子棋游戏出来。然而,若是要做一个围棋呢?java可以把五子棋的规则抽象为一个对象,而scratch的规则融入到了过程中。转成围棋的时候,java修改一下规则,修改一下棋盘就搞定了,其他资源都可以复用,而scratch则需要将大部分的代码都推翻重做。
关于名称,java约定类名大写开头,而变量和方法以小写开头。命名的办法有两种,驼峰命名法和下划线命名法。
驼峰:单词间没有间隔,除了第一个单词外其他单词开头都使用大写。
下划线:单词间用下划线作为间隔。
在java中,驼峰命名法被广泛使用。
此外,变量的名称不支持除下划线(_)和$号之外的英文特殊符号,$号用于java编译器生成一些代码,一般不在开发中用来命名。
java支持utf-8编码,因此你可以用中文作为java变量的名称,但并不推荐。
常量是一种特殊的变量,在java中使用“public static final 类型 名称”来定义。常量的名称一般全部大写。
2020年01月31日 05点01分 12
level 11
万里星定 楼主
注释
所有的注释都会被编译器忽略,但有助于增加代码可读性(对于复杂的代码尤其重要,不然第二天就忘了这个代码什么意思了)
//:单行注释,这一行之后的所有字符都是注释
/* */:多行注释,两个符号之间都是注释内容。
/** */:多行注释,本质上与上面的没有区别,但会被IDE作为javadoc文档读取(当你把鼠标移到类上时,会出现一个浮窗,里面有类的信息,被称为javadoc)
//TODO xxx:对待写完代码的备注,需要标注在注释中。这会被IDE读取,方便之后自己找到这个进度。xxx是关于这个进度的信息。
2020年01月31日 09点01分 13
level 11
万里星定 楼主
运算符
加:+
减:-
乘:*
除:/(这边要注意,java的转义符是\,不要搞混了,当然搞混了也没事,IDE会报错)
为变量赋值:=
运算不能直接进行,必须作为一个变量的值或传入一个方法的参数才行。
还要注意一点:范围大的数字和范围小的数字进行运算,结果是范围大的,如:2 * 1.1,结果是double类型。而1 * 1000000000000L,结果是long类型。
在数字后面加S,会被看成short类型;加L,会被看成long;加F,会被看成float;加D,会被看成double。加数字基本类型的首字母(小写也行,但一般加的都是大写),就会被看成这个类型的数字。数字默认都是int,小数默认都是double。
建议在运算符前后加上一个空格,这样有利于可读性,如int a = 1 + 1;
布尔运算符
==:是否相等
<:是否小于
>:是否大于
<=:小于等于
>=:大于等于
|:或(两个判定都执行)
||:或(前面一个为true时不执行后面的判定,直接返回true)
&:与(两个判定都执行)
&&:与(前面一个为false时不执行后面的判定,直接返回false)
!:加在一个判别式前面,得其反值(!true得false,!false得true)
自增自减
a++:自增1,同a = a+1,但传入运算符的是原值,如:
int a=1;
a++ + 1 == 2 //true
++a:自增1,同a = a + 1,传入运算符的是新值,如:
int a = 1;
a++ + 1 == 3; //true
a--:自减1,和自增差不多
--a:自减1,和自增差不多
自增的变量后不需要空格。
看看这个情况:a+++b。如果没有空格,我们根本不知道这个式子具体是什么意思,这也是运算符间加空格的一大原因
自增优先于数字运算符,数字运算符优先于布尔运算符,!优先于其他布尔运算符。如果不确定运算顺序时,可以用括号括起来,括号里的内容会优先执行。
char、byte和其他数字类型可以相互比较,因为它们本质上也是数字
三元运算符
int a = boolean ? 1 : 2;
这是三元运算符的使用方法。三元运算符必须为变量的赋值或是作为方法的传参,不能单独使用。三元运算符就是简化版的if...else...(如果否则),这在下一节会讲。
2020年01月31日 10点01分 14
扩展:Java还有这些运算符:左移“<<” 右移“>>” 异或“^”,还有针对数字的或“|” 与“&”,感兴趣的可以自己去搜一下,这些在开发中不是很常用,在这里不讲
2020年01月31日 15点01分
补充:java的String(字符串)也有“+”运算符,可以将两个字符串连接在一起。三元运算符那边,如果boolean为true,为a赋值1;若为false,为a赋值2。++a那边是++a + 1 = 3; 感谢楼下的补充
2020年01月31日 15点01分
level 11
自增自减那里应该是++a +1 == 3;//true吧[小乖]
2020年01月31日 14点01分 15
嗯,对,疏忽了
2020年01月31日 14点01分
level 11
万里星定 楼主
(16楼还没写内容就发出去了,自删了)
转义符
\" 双引号(char中可直接用双引号)
print(" \" ") 输出 "
\' 单引号(String中可直接用单引号)
print(' \' ') 输出 '
\\ 反斜杠字符
\n 换行
\r 光标移到本行开头(这个我没用过,听说Windows换行要\n\r,然而我都是直接用\n的,也没出问题)
\b 退格(在eclipse里没用,会生成一个问号符号)
这些都是比较常用的转义字符。还有其他的转义符,但那些在开发中用不上。
2020年02月01日 02点02分 17
1 2 3 尾页